## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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 session-based give-up voting and fix cursor emojis ([bb2d6fc](https://github.com/antialias/soroban-abacus-flashcards/commit/bb2d6fc7d80632ad960dad2ea70a6ee792d0882e)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **know-your-world:** actually change magnifier element dimensions to 1/3 ([31a06d6](https://github.com/antialias/soroban-abacus-flashcards/commit/31a06d6fef0612fa462906630fd731d24e7bdb0b)) - **know-your-world:** correctly identify local player for cursor sharing ([7aafe8c](https://github.com/antialias/soroban-abacus-flashcards/commit/7aafe8c92e0b73bd72d43a42a6596b91934c92c2)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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:** use localPlayerId for cursor updates in all modes ([5e8c37b](https://github.com/antialias/soroban-abacus-flashcards/commit/5e8c37b68ed6031f030b1429f76b6b456df4bd88)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** add multiplayer cursor sharing and fix map viewport ([c3b94be](https://github.com/antialias/soroban-abacus-flashcards/commit/c3b94bea3d43dfdd022d27974c679f055ec39043)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **know-your-world:** correctly identify local player for cursor sharing ([7aafe8c](https://github.com/antialias/soroban-abacus-flashcards/commit/7aafe8c92e0b73bd72d43a42a6596b91934c92c2)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **know-your-world:** use localPlayerId for cursor updates in all modes ([5e8c37b](https://github.com/antialias/soroban-abacus-flashcards/commit/5e8c37b68ed6031f030b1429f76b6b456df4bd88)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **i18n:** use useMessages() for tutorial translations ([95b0105](https://github.com/antialias/soroban-abacus-flashcards/commit/95b0105ca3b28c5adfa843e8d77a8b27d9e7ade4)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1)) - implement full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-26) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - 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)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - 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 infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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 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 rithmomachia turn in nav ([7c89bfe](https://github.com/antialias/soroban-abacus-flashcards/commit/7c89bfef9c60db0e2c46e920500dcc1fbe90d3df)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### 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)) - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace sampling with strategic geometric intersection tests ([ea3524e](https://github.com/antialias/soroban-abacus-flashcards/commit/ea3524eb5a54275cb995a23ae355b428cb0be9f5)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use flatten-js for precise geometric intersection detection ([743adae](https://github.com/antialias/soroban-abacus-flashcards/commit/743adae92d7f7bf5f08146723f8dcedbfbe5fee7)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - 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)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-25) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **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:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract adaptive zoom search algorithm (Phase 1) ([e2ad8fb](https://github.com/antialias/soroban-abacus-flashcards/commit/e2ad8fb90100c1090bcf8a9519eba74778e50139)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract useMagnifierZoom hook (Phase 2) ([e4591b6](https://github.com/antialias/soroban-abacus-flashcards/commit/e4591b6b39ce059c08fafb053e73e2b366ec6d2e)) - extract useRegionDetection hook (Phase 2) ([a45eb44](https://github.com/antialias/soroban-abacus-flashcards/commit/a45eb448e86c77c10910d66e6bb7cd8d83c50cb3)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - integrate adaptive zoom search utility (Phase 3) ([1ceb507](https://github.com/antialias/soroban-abacus-flashcards/commit/1ceb5078d54dd905db6ff3eae1e11c3b6ada3831)) - integrate usePointerLock hook into MapRenderer (Phase 1) ([fb55a1c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb55a1ce53e33bf98f41e88c126663a3e4aa85f2)) - integrate useRegionDetection hook into MapRenderer (Phase 3) ([57e9895](https://github.com/antialias/soroban-abacus-flashcards/commit/57e9895a1bbd8d58345b11bf15ce156e4e5047a5)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - create comprehensive magnifier architecture documentation (Phase 4) ([bbfc23b](https://github.com/antialias/soroban-abacus-flashcards/commit/bbfc23b9922583707b16b03f5cf07d0d0648afc8)) - create detailed integration plan for pointer lock and zoom hooks ([12aba01](https://github.com/antialias/soroban-abacus-flashcards/commit/12aba01b73ca6ebbf97e0ec3a14f218c1455b254)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update progress - adaptive zoom search integrated ([df4736b](https://github.com/antialias/soroban-abacus-flashcards/commit/df4736b69e20266653023e9c80daf329a23b5a70)) - update progress - Phase 3 partial completion ([1827235](https://github.com/antialias/soroban-abacus-flashcards/commit/1827235e896e780d0df314468bb638f582bbb84c)) - update refactoring progress - all phases complete! ([757e15e](https://github.com/antialias/soroban-abacus-flashcards/commit/757e15e0a93fa5bffd91a0b9b26be09bf2f0d0aa)) - update refactoring progress - Phase 2 complete ([8a6412e](https://github.com/antialias/soroban-abacus-flashcards/commit/8a6412eb2e09baae0576e087af14bd477d8348c8)) - update refactoring progress - Phase 4 complete ([a6fbb9c](https://github.com/antialias/soroban-abacus-flashcards/commit/a6fbb9c5cadf39fbd8db89c6d592a69e1d89d23f)) - update refactoring progress - useMagnifierZoom complete ([e113e5d](https://github.com/antialias/soroban-abacus-flashcards/commit/e113e5db1ad890c5fd0dccdfe71c351e4ba70bd3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - add comprehensive unit tests for know-your-world utilities ([30a7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/30a7a1d23d869572f861ec940772bc81a5050b2e)) - add comprehensive unit tests for know-your-world utilities ([1dcadf3](https://github.com/antialias/soroban-abacus-flashcards/commit/1dcadf343dc5818e2734c8384b1109f790ef36fb)) - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete screen pixel ratio refactoring - replace all instances ([360f840](https://github.com/antialias/soroban-abacus-flashcards/commit/360f8409d0742751dd8bcdb906e38ec85bf70fa9)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract pointer lock logic to custom hook ([d5b16d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d5b16d5f5fbfebdbdf519c4147734c10ea77aac9)) - extract screen pixel ratio calculations to utility module (Phase 1) ([efb39b0](https://github.com/antialias/soroban-abacus-flashcards/commit/efb39b013c44c58cfde94d8c3f04355c9b95e329)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - extract zoom capping logic to utility module ([44d99bc](https://github.com/antialias/soroban-abacus-flashcards/commit/44d99bc498a7b1ce589270550a7add1b6e896ff0)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - 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)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **i18n:** use useMessages() for tutorial translations ([95b0105](https://github.com/antialias/soroban-abacus-flashcards/commit/95b0105ca3b28c5adfa843e8d77a8b27d9e7ade4)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-24) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - 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)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** Add borrow notation scaffolding for subtraction ([ff161d4](https://github.com/antialias/soroban-abacus-flashcards/commit/ff161d4e30a42dc58d4a409bd2f948e61b6d495b)) - **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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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 TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-23) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-22) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-22) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 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 nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - 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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - 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 borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use existing Radix toast system for errors ([59901c5](https://github.com/antialias/soroban-abacus-flashcards/commit/59901c5533adfc502c3f97652f1c7a5e8c63db87)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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 distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-20) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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)) - center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - 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)) - Integrate threshold input into Point Victory card ([b29bbee](https://github.com/antialias/soroban-abacus-flashcards/commit/b29bbeefcad92be42f7a3ca27ac126db4232ab26)) - **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)) - lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99)) - 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 unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - 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)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove debug logs for fixed issues ([5e42aab](https://github.com/antialias/soroban-abacus-flashcards/commit/5e42aabfa9fd64bb6b00d579972ca16ec3812045)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - simplify pointer lock with movement delta multipliers ([749b16a](https://github.com/antialias/soroban-abacus-flashcards/commit/749b16ac271decc1f1730aba9ebd208347e39ae1)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - unify zoom modes into single adaptive zoom ([d1acdd9](https://github.com/antialias/soroban-abacus-flashcards/commit/d1acdd9e5492a212a736180afed41e4546895453)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add comprehensive precision controls documentation for Know Your World ([8511998](https://github.com/antialias/soroban-abacus-flashcards/commit/8511998d0cde710563d502b650d6678082165ba6)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-19) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - 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 API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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 per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - 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 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - 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)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - 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)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - 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 currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-18) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add operator-specific settings architecture & refactoring plan ([e06de8e](https://github.com/antialias/soroban-abacus-flashcards/commit/e06de8ea47a548139a542b3d7edfca1b56678f83)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-17) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - 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)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - expand query key to include display settings ([7e3d84b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e3d84b127640643d93ec99a0c7c414d263ca4c3)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - remove loadedPages and fetchingPages state ([90fb88b](https://github.com/antialias/soroban-abacus-flashcards/commit/90fb88b72acf172119e0e3dd863c6f4b4fe59f71)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - replace two-query system with single all-pages query ([fbb035b](https://github.com/antialias/soroban-abacus-flashcards/commit/fbb035b12baed975fd5611ef8033a689366013cf)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - simplify fetchWorksheetPreview to remove pagination ([200e394](https://github.com/antialias/soroban-abacus-flashcards/commit/200e3940556bd96c32988d11d8f22061e5fc7b9f)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add comprehensive merge conflict resolution guide ([e4fc363](https://github.com/antialias/soroban-abacus-flashcards/commit/e4fc363a970acd00e700f64498bcecf1095c30d8)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add merge conflict resolution section to CLAUDE.md ([a82d80b](https://github.com/antialias/soroban-abacus-flashcards/commit/a82d80b02c3f1421bd8874b4d1f26719a5f82704)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-13) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - document compose-updater detection issue ([b37a960](https://github.com/antialias/soroban-abacus-flashcards/commit/b37a960d35ff35dab227d1f79ee51d0b27c8524b)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-13) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** redesign display options as toggle buttons ([ac3b749](https://github.com/antialias/soroban-abacus-flashcards/commit/ac3b74960506be3f7d9b03e558e6e60b8ce6af4a)) - **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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-13) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - eliminate props drilling for openDeploymentInfo ([24302d8](https://github.com/antialias/soroban-abacus-flashcards/commit/24302d8fc5029853158e40b68a01d59461825dd4)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-13) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - 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-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - 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 xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - 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)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - 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)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - link problem generation docs to README graph ([1a7e81c](https://github.com/antialias/soroban-abacus-flashcards/commit/1a7e81c4e2b00fab590350d0f710bfab01c12b81)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - comprehensive problem generation documentation ([5304e4d](https://github.com/antialias/soroban-abacus-flashcards/commit/5304e4da4e81777e3cee6aefb1f8ccdeb95230b6)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - 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 shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) - reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-12) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move large page counts to dropdown menu ([4ea4ead](https://github.com/antialias/soroban-abacus-flashcards/commit/4ea4ead834dec096dab94d6a29c7c780803b8a5e)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - start page dropdown at 4 and remove 'pages' suffix ([cf7eb57](https://github.com/antialias/soroban-abacus-flashcards/commit/cf7eb574d407a908cccbc6b9237b2b1b5122a4af)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - 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 wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - decouple virtualization from config source ([95f61c6](https://github.com/antialias/soroban-abacus-flashcards/commit/95f61c6e701373763c9a02b8f634ea22c3fc0767)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - page indicator stuck on page 1 due to stale closure ([952ebc7](https://github.com/antialias/soroban-abacus-flashcards/commit/952ebc7756273900c60d714f0ef1da07af99e7d1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - 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 curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** redesign display options as toggle buttons ([ac3b749](https://github.com/antialias/soroban-abacus-flashcards/commit/ac3b74960506be3f7d9b03e558e6e60b8ce6af4a)) - **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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - board rotation now properly fills height in portrait mode ([b5a96ea](https://github.com/antialias/soroban-abacus-flashcards/commit/b5a96eaeb1e29c20304142a7a0adf62f1cef570f)) - calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - 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)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - add worksheet sharing infrastructure with database persistence ([7b4c7c3](https://github.com/antialias/soroban-abacus-flashcards/commit/7b4c7c3fb62310e892792220f76c750bcee3cf05)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - use server-side loading for shared worksheets ([c9a9146](https://github.com/antialias/soroban-abacus-flashcards/commit/c9a9146820d0a183467a81053e2f9985df4f909e)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **i18n:** use useMessages() for tutorial translations ([95b0105](https://github.com/antialias/soroban-abacus-flashcards/commit/95b0105ca3b28c5adfa843e8d77a8b27d9e7ade4)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - eliminate prop drilling with WorksheetConfigContext ([a2ab826](https://github.com/antialias/soroban-abacus-flashcards/commit/a2ab82620af853e3894c8ab9d43ba9220355fbae)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - extract DifficultyPresetDropdown and MakeEasierHarderButtons ([4d1c2c1](https://github.com/antialias/soroban-abacus-flashcards/commit/4d1c2c1e793a8436ddff1942ccce826c909e7a53)) - extract OverallDifficultySlider and integrate DifficultyPresetDropdown ([783f269](https://github.com/antialias/soroban-abacus-flashcards/commit/783f269a2f78ed7d61512cda3466098622def506)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - 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 text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d)) - use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - redesign tabs to look like traditional tabs ([8f1ddf4](https://github.com/antialias/soroban-abacus-flashcards/commit/8f1ddf4b34fc3b690ed248c7bc40d56f8b3ef05a)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** redesign display options as toggle buttons ([ac3b749](https://github.com/antialias/soroban-abacus-flashcards/commit/ac3b74960506be3f7d9b03e558e6e60b8ce6af4a)) - **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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-11) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e)) - 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 card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - convert mode selector to large tab-style interface ([8910f6a](https://github.com/antialias/soroban-abacus-flashcards/commit/8910f6a1977048d5f47509549e52287fcca1afce)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - move progressive difficulty toggle below operator section ([0425033](https://github.com/antialias/soroban-abacus-flashcards/commit/0425033080625dd0744f034579eaf156580eac20)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - remove distracting parallax and wobble 3D effects ([28a2d40](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2d40996256700bf19cd80130b26e24441949f)) - remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75)) - remove wobble physics and enhance wood grain visibility ([5d97673](https://github.com/antialias/soroban-abacus-flashcards/commit/5d976734062eb3d943bfdfdd125473c56b533759)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - change operator values from Unicode to alphanumeric strings ([f06a6f2](https://github.com/antialias/soroban-abacus-flashcards/commit/f06a6f2dcd4070fd9c20fec8c0692b65c4a18c69)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - 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 undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - position arrowhead at endpoint and increase size ([bdf28b2](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf28b21b2fd5bfa53ad5a7977f092654e26a3cf)) - prevent regrouping problems in no-regrouping skills and enable progressive difficulty toggle ([59712e1](https://github.com/antialias/soroban-abacus-flashcards/commit/59712e1021c41826f940fe506c7781679b46b6a1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) - **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc)) - **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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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 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:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4)) - **worksheets:** dynamically size grid based on actual problem digits ([130bbd4](https://github.com/antialias/soroban-abacus-flashcards/commit/130bbd49dd02654ee7be3aa9b9ebd82f14da54e9)) - **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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:** 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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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 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:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-10) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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 LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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 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:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-09) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903)) - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **tutorial:** correct column validation for bead highlights ([9ba1824](https://github.com/antialias/soroban-abacus-flashcards/commit/9ba18242262cd63cc6c25361aaec3a4c0f66b161)) - **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c)) - **tutorial:** fix overlay rendering, arrow indicators, and bead visibility ([a804316](https://github.com/antialias/soroban-abacus-flashcards/commit/a80431608dbc4f54d8e4f1095936b95a258b4a72)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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 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:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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 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:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add function-based custom bead rendering and HTTP status code easter eggs ([fde5ae9](https://github.com/antialias/soroban-abacus-flashcards/commit/fde5ae916430c194de4b0d2aa5fd95f25b2f7a80)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** enhance addition worksheets with ten-frames and refinements ([71ad300](https://github.com/antialias/soroban-abacus-flashcards/commit/71ad300c23ffa8024c8dbeef32e06ff67bb25259)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **worksheets:** Add "Practice" difficulty profile for scaffolded regrouping mastery ([d23b606](https://github.com/antialias/soroban-abacus-flashcards/commit/d23b606642d0f72890d5449a4451c7bb3d44d7dd)) - **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:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255)) - **worksheets:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - 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)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** Fix subtraction regrouping frequency bug ([8d8e55d](https://github.com/antialias/soroban-abacus-flashcards/commit/8d8e55d5c4e3daa5bf489fca7d89546aa289d1a3)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add theme support to abacus style dropdown ([2e294ee](https://github.com/antialias/soroban-abacus-flashcards/commit/2e294ee820bdf01dde39c80cef85db39d5657d70)) - 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 unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add close button and theme support to mobile menu ([ea41b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ea41b323d08f63ea81efa6d988ea3acf1a0b003a)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add theme support to abacus style dropdown ([2e294ee](https://github.com/antialias/soroban-abacus-flashcards/commit/2e294ee820bdf01dde39c80cef85db39d5657d70)) - add theme support to desktop hamburger menu ([ab9272b](https://github.com/antialias/soroban-abacus-flashcards/commit/ab9272bee61703af465264f3a8bb2dd6c270a9f3)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - implement two-column landscape layout with smart viewport-based flexbox ([b57458b](https://github.com/antialias/soroban-abacus-flashcards/commit/b57458b039bb0826e264116fdde7237d0b7b0a75)) - 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)) - 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)) - make mobile menu more responsive with larger touch targets ([3ad244f](https://github.com/antialias/soroban-abacus-flashcards/commit/3ad244f2d3993a62e1a129eb2618e53b11cf0b0d)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - convert LanguageSelector to Radix UI with theme support ([515e4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/515e4c4f98b62c6fbfa4e0b585ad7ec599779940)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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 full-screen mobile hamburger menu with portal ([615cd28](https://github.com/antialias/soroban-abacus-flashcards/commit/615cd288292f1def1a7a86fb36fd430debe976cf)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** integrate subtraction scaffolding into smart difficulty mode ([15bded1](https://github.com/antialias/soroban-abacus-flashcards/commit/15bded1ab852d405f74b6646688225720acdd843)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract ConfigPanel helper components (Phase 1) ([3656800](https://github.com/antialias/soroban-abacus-flashcards/commit/3656800534e45336f05303a64db60980dcfe4db0)) - **worksheets:** extract shared ConfigPanel sections (Phase 2 complete) ([d27e2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/d27e2c03bd7779b5072d13f0272759d6e81b0836)) - **worksheets:** extract Smart Mode controls (Phase 3 complete) ([76a6168](https://github.com/antialias/soroban-abacus-flashcards/commit/76a6168b0061f340eaaad30a4bbafe75630a3634)) - **worksheets:** extract StudentNameInput component (Phase 2 - partial) ([cbe29d5](https://github.com/antialias/soroban-abacus-flashcards/commit/cbe29d5c54aa8dc58f6b82fcf0f8961f472e8132)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** Phase 4 - Extract Manual Mode controls ([4cf6fca](https://github.com/antialias/soroban-abacus-flashcards/commit/4cf6fcab15e5f8994ddbd652b94e873d332f436a)) - **worksheets:** Phase 5 - Final ConfigPanel cleanup ([85db052](https://github.com/antialias/soroban-abacus-flashcards/commit/85db052f07be22a81cd709264eff27f7bc6583ad)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **abacus-react:** add automatic theme detection for numeral colors ([cbfd861](https://github.com/antialias/soroban-abacus-flashcards/commit/cbfd8618a91d58dffb73dd3aefde11023ece4d5a)) - **abacus-react:** add comprehensive Storybook stories for automatic theme detection ([8ef57cc](https://github.com/antialias/soroban-abacus-flashcards/commit/8ef57ccec5debaa0ffa1c0e36005bd478cde60f1)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** remove duplicate numeral rendering and fix dark mode colors ([fcbf0f5](https://github.com/antialias/soroban-abacus-flashcards/commit/fcbf0f5421a790784dc7cc286f9082c6d46746ee)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - **abacus-react:** showNumbers prop was hardcoded to false, breaking numeral display ([de89dcd](https://github.com/antialias/soroban-abacus-flashcards/commit/de89dcddb3e6b5021cc0f90c68c4109f8f6c8907)) - add light/dark mode support to tutorial tooltips and decomposition UI ([ea10249](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10249e949008e6b82ba79869f40990edd1e997)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add missing color definitions to example route ([bc7ca12](https://github.com/antialias/soroban-abacus-flashcards/commit/bc7ca12158a03c3e0bfe87f34b1c8ad399e27007)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - PDF generation now respects operator and digitRange settings ([8b8dfee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b8dfeefbdf2f75300b20ddf731677a627d50438)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace hardcoded colors with semantic tokens in HomeBlogSection ([e124096](https://github.com/antialias/soroban-abacus-flashcards/commit/e1240969149150c5de9e6976dd0c19a19ab5efa7)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - use semantic tokens for nav bar transparent mode on hero ([d05c6a8](https://github.com/antialias/soroban-abacus-flashcards/commit/d05c6a8664450b26b0feae813b16b54f43f32cff)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - complete subtraction modularization - 793 lines → modular structure ([a769fe1](https://github.com/antialias/soroban-abacus-flashcards/commit/a769fe1e2022cc25b9d15fa63c3fe0a2e149eb3a)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add arrow from '1' in borrow hint pointing right ([b718994](https://github.com/antialias/soroban-abacus-flashcards/commit/b718994dab894b2563d207c9c2a832e5911dd034)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add diagonal arrow from '1' to borrowed 10s box ([a9319c3](https://github.com/antialias/soroban-abacus-flashcards/commit/a9319c3bd8dcc0fc201d865765b615800ca36807)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - add game preview system with mock arcade environment ([25880cc](https://github.com/antialias/soroban-abacus-flashcards/commit/25880cc7e463f98a5a23c812c1ffd43734d3fe1f)) - add infrastructure for borrowing hints toggle ([74c6756](https://github.com/antialias/soroban-abacus-flashcards/commit/74c67566d2b913bad2155227cd19b7da1c732cba)) - add per-player stats tracking system ([613301c](https://github.com/antialias/soroban-abacus-flashcards/commit/613301cd137ad6f712571a0be45c708ce391fc8f)) - add smooth curved arrow for borrowing hints ([112745c](https://github.com/antialias/soroban-abacus-flashcards/commit/112745ce16da776568a059a5b8ff4de730e57400)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - handle cascading borrows in borrowing hints ([3e1b51b](https://github.com/antialias/soroban-abacus-flashcards/commit/3e1b51bd84a5ecd75d414c7da9d3dfa1fd89f3e5)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - 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)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - refactor borrow scaffolding into unified UI with column alignment ([41b5c05](https://github.com/antialias/soroban-abacus-flashcards/commit/41b5c057ed53265faf8ffa91dca27ca6a43df886)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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)) - arrow direction - go RIGHT to borrowed 10s box, not left ([fab1fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/fab1fb10b7c777e66265a001a3fc57ab3cec1b01)) - 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - disable place value colors in subtraction borrow boxes to fix arrow layering ([b4586ba](https://github.com/antialias/soroban-abacus-flashcards/commit/b4586bac8ebc329a6c4c44866a3cf82343e54b60)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - make borrow notation destination boxes full height ([17307f7](https://github.com/antialias/soroban-abacus-flashcards/commit/17307f7e8269a20a2c8c0d20e88d7bed842ee644)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - 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)) - **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)) - reduce borrowing hint font size from 0.5x to 0.25x ([f5d3de2](https://github.com/antialias/soroban-abacus-flashcards/commit/f5d3de230912243cf702b9975f4a19a94c214255)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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 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)) - use numeric cellSize for borrow box sizing in hints ([cc54176](https://github.com/antialias/soroban-abacus-flashcards/commit/cc54176cb13c49147c6904db5c0627b2777232f8)) - various game improvements and UI enhancements ([b67cf61](https://github.com/antialias/soroban-abacus-flashcards/commit/b67cf610c570d54744553cd8f6694243fa50bee1)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - begin modularizing typstHelpers.ts - extract shared components ([b42daf9](https://github.com/antialias/soroban-abacus-flashcards/commit/b42daf9a4b0b8f77914af8f5a89e2d19ee48badf)) - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - place 'n − 1 →' text inside borrow box at top ([232e1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/232e1a2221d7de0f40d2490a675494452a532566)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - simplify borrowed 10s box UI and add place value colors ([42c9c9d](https://github.com/antialias/soroban-abacus-flashcards/commit/42c9c9dd7eb377a8fc19cef0d6fc5ba6aa68c478)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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 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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add color-coding to difficulty presets with interpolation ([b1201b8](https://github.com/antialias/soroban-abacus-flashcards/commit/b1201b83c02e85c15e7c581be58179a9a92c9893)) - **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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **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:** 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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add color-coding to difficulty presets with interpolation ([b1201b8](https://github.com/antialias/soroban-abacus-flashcards/commit/b1201b83c02e85c15e7c581be58179a9a92c9893)) - **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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** make progressive difficulty available in both Smart and Manual modes ([54abd5d](https://github.com/antialias/soroban-abacus-flashcards/commit/54abd5de098026d988a6ccfde2c9ffde92e7f79b)) - **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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-08) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add color-coding to difficulty presets with interpolation ([b1201b8](https://github.com/antialias/soroban-abacus-flashcards/commit/b1201b83c02e85c15e7c581be58179a9a92c9893)) - **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 difficulty preset dropdown for Smart mode ([49f6c02](https://github.com/antialias/soroban-abacus-flashcards/commit/49f6c029f6fee0e4a5d1cf5474bdea8fcbeffa4a)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **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 regrouping frequency controls to Manual mode ([f060692](https://github.com/antialias/soroban-abacus-flashcards/commit/f06069241ffc095e4fef8894d70b392f3ef1153d)) - **worksheets:** add type-safe config persistence with schema versioning ([0406adc](https://github.com/antialias/soroban-abacus-flashcards/commit/0406adc9dab6346a1b4fab02d5b8a11fa149a8be)) - **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:** 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:** 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 difficulty controls and problem sizing ([aedeb45](https://github.com/antialias/soroban-abacus-flashcards/commit/aedeb456f16a731c18a49fc388b6d6e17f99f29d)) - **worksheets:** improve preset dropdown with descriptions and remove duplicate buttons ([852504a](https://github.com/antialias/soroban-abacus-flashcards/commit/852504a4fddbd2949e4636dc420effdb35c04e75)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** make progressive difficulty available in both Smart and Manual modes ([54abd5d](https://github.com/antialias/soroban-abacus-flashcards/commit/54abd5de098026d988a6ccfde2c9ffde92e7f79b)) - **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:** 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:** 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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** actually fix dropdown button height by constraining description area ([aa9052a](https://github.com/antialias/soroban-abacus-flashcards/commit/aa9052a49ecab8a260dcf10c38145d28df234c2b)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **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:** 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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** extract utility functions ([2e0f99f](https://github.com/antialias/soroban-abacus-flashcards/commit/2e0f99f98a871db63922fe1a068489c7b071b194)) - **worksheets:** simplify scaffolding summary with grouped frequency ([3541b79](https://github.com/antialias/soroban-abacus-flashcards/commit/3541b792d5c206b625a8496ad6c1ae32dc5c071f)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add comprehensive refactoring plan for AdditionWorksheetClient ([f2e48bb](https://github.com/antialias/soroban-abacus-flashcards/commit/f2e48bb8ab9c30124e29abdb87e42faaf8243bb3)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) - **worksheets:** add two-mode system planning docs and update API route ([369b7f2](https://github.com/antialias/soroban-abacus-flashcards/commit/369b7f263de413bef16402b9a9a8857323dd5ba1)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - implement light/dark theme system with semantic tokens ([210a014](https://github.com/antialias/soroban-abacus-flashcards/commit/210a014699e11546e51069378e7c45528b8e8461)) - 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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **worksheets:** prevent wrong preset showing as active at custom positions ([88e929e](https://github.com/antialias/soroban-abacus-flashcards/commit/88e929ed6374f954c64a720f84e166a3ce94f386)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add "The Calculator Won" post on abacus education history ([8e04867](https://github.com/antialias/soroban-abacus-flashcards/commit/8e0486765a263d0fa68967a9fbfe7c1dab2e6359)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **worksheets:** prevent wrong preset showing as active at custom positions ([88e929e](https://github.com/antialias/soroban-abacus-flashcards/commit/88e929ed6374f954c64a720f84e166a3ce94f386)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - optimize ten-frame blog examples for dark theme ([904701d](https://github.com/antialias/soroban-abacus-flashcards/commit/904701da2badb037b9c9c88064126b652792767a)) - Redesign Rithmomachia setup page with dramatic medieval theme ([6ae4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/6ae4d13dc784a87f85206c6ff6d005e5b23b678c)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **worksheets:** prevent wrong preset showing as active at custom positions ([88e929e](https://github.com/antialias/soroban-abacus-flashcards/commit/88e929ed6374f954c64a720f84e166a3ce94f386)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) - **worksheets:** prevent wrong preset showing as active at custom positions ([88e929e](https://github.com/antialias/soroban-abacus-flashcards/commit/88e929ed6374f954c64a720f84e166a3ce94f386)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - prevent undefined displayRules error in worksheet generator ([7c33d02](https://github.com/antialias/soroban-abacus-flashcards/commit/7c33d0246f897527c0c48f68d89f2ed1fee0b263)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add missing blog dependencies to package.json ([ceefb2f](https://github.com/antialias/soroban-abacus-flashcards/commit/ceefb2f1bd5979b3cf419b62ea595446196f37e2)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve TypeScript errors blocking Docker build ([a195338](https://github.com/antialias/soroban-abacus-flashcards/commit/a195338ba1805d5aa30a86bd293e1ca84a9f78ca)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **blog:** add blog pages and API endpoints ([1886ea0](https://github.com/antialias/soroban-abacus-flashcards/commit/1886ea0e7339f67b87780910698025af4ecc549c)) - **blog:** add navigation bar to blog pages ([6b4ed5d](https://github.com/antialias/soroban-abacus-flashcards/commit/6b4ed5d9dc355bed853fc209151d3f4374b4363f)) - **blog:** generate worksheet examples showing scaffolding progression ([b628a34](https://github.com/antialias/soroban-abacus-flashcards/commit/b628a3460565ff6f8d5e73ae37d8563209f66498)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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)) - **homepage:** responsive 2-column layout with data attributes ([ad33056](https://github.com/antialias/soroban-abacus-flashcards/commit/ad33056b12559355d0a8d1cec8a59783f3db59d4)) - **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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **abacus-react:** fix animations by preventing component remounting ([be7d4c4](https://github.com/antialias/soroban-abacus-flashcards/commit/be7d4c471327534a95c4c75372680c629b5f12c2)) - **abacus-react:** include space for numbers in viewBox calculation ([1da3358](https://github.com/antialias/soroban-abacus-flashcards/commit/1da3358db107abb8d36822337af9e29ff282adca)) - **abacus-react:** restore original AbacusReact measurements and positioning ([88c0baa](https://github.com/antialias/soroban-abacus-flashcards/commit/88c0baaad9b83b60ab8cdcad92070cc049d61cc7)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **blog:** update difficulty post with scaffolding examples ([191231f](https://github.com/antialias/soroban-abacus-flashcards/commit/191231f8ffc5f7b5c247ad0d114a4fd79464da82)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add academic publication plan for 2D difficulty system ([ca8d774](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8d774370941bf92c7676ec9679808a280a4817)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) - **worksheets:** add constrained 2D difficulty system specification ([7d72865](https://github.com/antialias/soroban-abacus-flashcards/commit/7d72865d4da0d2d548be6639b28f3827f31d1a52)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-07) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) - **worksheets:** use distance-guided discrete progression for difficulty ([bd6fadf](https://github.com/antialias/soroban-abacus-flashcards/commit/bd6fadf0dbd7212c65ea02514b5c89fc55ff2455)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-06) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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:** 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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-06) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-06) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add API endpoint for live worksheet preview examples ([bef3a21](https://github.com/antialias/soroban-abacus-flashcards/commit/bef3a2144249316c53b46a2748f099039a0b104c)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - add DisplayOptionsPreview component with debouncing ([6502da7](https://github.com/antialias/soroban-abacus-flashcards/commit/6502da7e378acea468d48fc58a07fa2dfa91076d)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - replace static examples with live preview in display options ([4361ad3](https://github.com/antialias/soroban-abacus-flashcards/commit/4361ad30051b11e5415f4828e9d199f940af205d)) - **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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - extract shared Typst problem rendering function ([d150955](https://github.com/antialias/soroban-abacus-flashcards/commit/d1509558157b08433d1730f815f55bfa95327562)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** constrain display preview width ([507a39d](https://github.com/antialias/soroban-abacus-flashcards/commit/507a39da19d389cef8e29f2cc261d24315d3b445)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add code factoring guidelines to prevent copy-paste ([71a8ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/71a8ab5c93e84e6b8cedc8cd3faef2f2c677ffce)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-06) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - correct Typst template path in Dockerfile ([4c518de](https://github.com/antialias/soroban-abacus-flashcards/commit/4c518decb7fcc0b519d07680cbfd01c94c23dd41)) - **db:** add statement-breakpoint to worksheet_settings migration ([42e1a71](https://github.com/antialias/soroban-abacus-flashcards/commit/42e1a71292f4f660d5b6b69a28c54ba7e29805f5)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) - **worksheets:** extract client component and add debug logging ([f7e4c52](https://github.com/antialias/soroban-abacus-flashcards/commit/f7e4c5241e32aa1f834243fefb2929196376c334)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-06) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **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:** 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:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) - **worksheets:** only show ten-frames row for problems that need regrouping ([8f92f5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8f92f5a57b633ca7464b0d7bef7db3c54f9e3e62)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** generate discrete pages with precise sizing ([56c0227](https://github.com/antialias/soroban-abacus-flashcards/commit/56c0227e9f27c39087ff9af7fa32128df6fc7311)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - move 3D abacus creator feature to separate branch ([c8aa602](https://github.com/antialias/soroban-abacus-flashcards/commit/c8aa602e1c9b6f42bc9f7bf69278511a15f98616)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **create:** add worksheet creator card to hub page ([c84d712](https://github.com/antialias/soroban-abacus-flashcards/commit/c84d7122f3c9636a80313df2438ff91fdedf0e30)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **flashcards:** add live preview functionality ([b38bec8](https://github.com/antialias/soroban-abacus-flashcards/commit/b38bec814b283a60d8f7cd39ae1b4af791af07dc)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **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)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** generate discrete pages with precise sizing ([56c0227](https://github.com/antialias/soroban-abacus-flashcards/commit/56c0227e9f27c39087ff9af7fa32128df6fc7311)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **abacus:** fix indentation ([847c503](https://github.com/antialias/soroban-abacus-flashcards/commit/847c50346f0accadf76f19207f0004157e14b085)) - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **i18n:** add Old High German (goh) language support ([b334a15](https://github.com/antialias/soroban-abacus-flashcards/commit/b334a15255ed9fa29beb43de66da0288691390c6)) - **i18n:** add translations for addition worksheet creator ([2bf645a](https://github.com/antialias/soroban-abacus-flashcards/commit/2bf645a30c9c1ecdedbc7fc6b1a6013e88e90c5c)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) - **worksheets:** add double-digit addition worksheet creator ([1a75213](https://github.com/antialias/soroban-abacus-flashcards/commit/1a75213df0772d98a15efa6ca5bbb751904a98c3)) - **worksheets:** generate discrete pages with precise sizing ([56c0227](https://github.com/antialias/soroban-abacus-flashcards/commit/56c0227e9f27c39087ff9af7fa32128df6fc7311)) - **worksheets:** improve preview error reporting ([d8b4951](https://github.com/antialias/soroban-abacus-flashcards/commit/d8b4951d6317e5255e739b76ce10eea34ca39095)) - **worksheets:** update ConfigPanel with accurate page calculations ([2c0fbd9](https://github.com/antialias/soroban-abacus-flashcards/commit/2c0fbd90740c9cfc6510208f46954dc503fc294d)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add libfuse2 and APPIMAGE_EXTRACT_AND_RUN for OpenSCAD extraction ([12490a7](https://github.com/antialias/soroban-abacus-flashcards/commit/12490a7083dd127ec95e5a2e15d604e97a81d00c)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **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)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - add comprehensive Storybook coverage and migration guide ([7a4a37e](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4a37ec6d0171782778e18122da782f069e0556)) - add cropToActiveBeads prop to AbacusStatic and AbacusReact ([35b0824](https://github.com/antialias/soroban-abacus-flashcards/commit/35b0824fc4fb0b754e53b20a00541da1bf4b8434)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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 internationalization for all create pages ([b080970](https://github.com/antialias/soroban-abacus-flashcards/commit/b080970d7647c8286a713b05b772166c2d701c4c)) - **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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **i18n:** add nav bar to 3D abacus creator page ([827a949](https://github.com/antialias/soroban-abacus-flashcards/commit/827a949216709d9f6a7ea5446acb36b6d83bf861)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - **syntax:** remove emoji variation selector causing build error ([00aabd8](https://github.com/antialias/soroban-abacus-flashcards/commit/00aabd8e6b2fe87cf4ea5cddc978c0788140be07)) - tolerate OpenSCAD CGAL warnings if output file is created ([88993f3](https://github.com/antialias/soroban-abacus-flashcards/commit/88993f36629206a7bdcf9aa9d5641f1580b64de5)) - **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)) - **ui:** add wrapper div to prevent content from appearing under nav ([99f4dd5](https://github.com/antialias/soroban-abacus-flashcards/commit/99f4dd51e3d4e28ea2eb4428d9c3aa12372ac592)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - use package-level cropToActiveBeads in generateDayIcon script ([b6c3d6b](https://github.com/antialias/soroban-abacus-flashcards/commit/b6c3d6bda4eef56bd2b3f4772e9a4236ba3ff5c7)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - add Storybook stories demonstrating cropToActiveBeads feature ([104f3e6](https://github.com/antialias/soroban-abacus-flashcards/commit/104f3e65d40a359b589136c7d3dedb8a9c31078b)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - fix formatting and add approved bash commands ([0c4b0c2](https://github.com/antialias/soroban-abacus-flashcards/commit/0c4b0c2fac3da9b037456f94bf2bfdcab70224f3)) - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **calendar:** add beautiful daily calendar with locale-based paper size detection ([bdca315](https://github.com/antialias/soroban-abacus-flashcards/commit/bdca3154f8336e17a7031be8d2917f9cf05f274a)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add client-side OpenSCAD WASM support for 3D preview ([eaaf17c](https://github.com/antialias/soroban-abacus-flashcards/commit/eaaf17cd4c675bfd40e0573b9c99f0c733d926aa)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - replace regex HTML parsing with deterministic bead position calculations in icon generation ([41a3707](https://github.com/antialias/soroban-abacus-flashcards/commit/41a3707841595a74de56c6adf6d271237f81ee0e)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - remove debug console.log statements ([32f51ae](https://github.com/antialias/soroban-abacus-flashcards/commit/32f51ae739679789585182ba659ec5f1168d652d)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - clarify dev server management in Claude Code instructions ([e08fdfd](https://github.com/antialias/soroban-abacus-flashcards/commit/e08fdfd676b51a9fed23bda336b13f5e1d40b96c)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **3d-abacus:** change default columns from 13 to 4 ([cd15c70](https://github.com/antialias/soroban-abacus-flashcards/commit/cd15c70a25c597c17ee5d2f816b1c85ba8ce4ce9)) - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - **docker:** upgrade OpenSCAD to 2024.11 to fix CGAL intersection bug ([e1bcd24](https://github.com/antialias/soroban-abacus-flashcards/commit/e1bcd241691050fa05cd49e14c288b4b070a7d17)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **guide:** make abacus sizes consistent and add nav spacing ([bea4842](https://github.com/antialias/soroban-abacus-flashcards/commit/bea4842a29aa86ca4261b4ddd6150bacc8babc46)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - **layout:** make nav height truly self-referential ([9886302](https://github.com/antialias/soroban-abacus-flashcards/commit/98863026b789d09eecb0bc3e013d112889a5d038)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-05) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **layout:** add systematic spacing for fixed nav bar ([4559fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/4559fb121d0df954ebaf33616a5262c7ca633c6e)) - mark dynamic routes as force-dynamic to prevent static generation errors ([d7b35d9](https://github.com/antialias/soroban-abacus-flashcards/commit/d7b35d954421fd7577cd2c26247666e5953b647d)) - **nav:** restrict transparent hero styling to home page only ([fab227d](https://github.com/antialias/soroban-abacus-flashcards/commit/fab227d6862672e8250b1c169b302fbae23ce4d2)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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)) - **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)) - use absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add critical section on never adding tsx to production dependencies ([770cfc3](https://github.com/antialias/soroban-abacus-flashcards/commit/770cfc3aca296b4f52c822710a1072fe501a0f49)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **web,docker:** add --format flag for Typst and upgrade to v0.13.0 ([19b9d7a](https://github.com/antialias/soroban-abacus-flashcards/commit/19b9d7a74f549c7e93c9564e4a903e1bcd5a4bbc)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** add shared dimension calculator for consistent sizing ([e5ba772](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ba772fde9839c22daec92007f052ca125c7695)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **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:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** add data-testid attributes back to beads for testing ([23ae1b0](https://github.com/antialias/soroban-abacus-flashcards/commit/23ae1b0c6f878daf79a993992d43ad80a89fa790)) - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - **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)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **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:** move tsx to production dependencies for calendar generation ([ffae9c1](https://github.com/antialias/soroban-abacus-flashcards/commit/ffae9c1bdbccc5edb2e747a09d1fcad3b29e4eac)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** move calendar generators to src/utils for proper compilation ([379698f](https://github.com/antialias/soroban-abacus-flashcards/commit/379698fea3fc8f04d716d35347749182d5c53b5c)) - **web:** return calendar SVG preview with PDF generation ([14a5de0](https://github.com/antialias/soroban-abacus-flashcards/commit/14a5de0dfadf423c646f4748b0de94f2483b18a1)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use client-side React rendering for live calendar preview ([f880cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/f880cbe4bffc898ae95d36d68615cf317d94012a)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) - **web:** use stdin/stdout for Typst compilation ([06f68cc](https://github.com/antialias/soroban-abacus-flashcards/commit/06f68cc74c31b54284808beadf67f4db08d03420)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **web:** use nested SVG elements to prevent coordinate space conflicts ([f9cbee8](https://github.com/antialias/soroban-abacus-flashcards/commit/f9cbee8fcdf80641f3b82a65fad6b8a3575525fc)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - **docker:** add scripts, abacus-react, and tsx for production calendar generation ([33eb90e](https://github.com/antialias/soroban-abacus-flashcards/commit/33eb90e316f84650ae619f8c6c02c9e77c663d1b)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) - **web:** use nested SVG elements to prevent coordinate space conflicts ([f9cbee8](https://github.com/antialias/soroban-abacus-flashcards/commit/f9cbee8fcdf80641f3b82a65fad6b8a3575525fc)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) - **web:** use direct function imports instead of execSync for calendar generation ([9f1715f](https://github.com/antialias/soroban-abacus-flashcards/commit/9f1715f0856bcd125a79014c0c8c854c1c7b3f4d)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **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)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **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 AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) - **web:** optimize monthly calendar for single-page layout ([b277a89](https://github.com/antialias/soroban-abacus-flashcards/commit/b277a89415d1823455376c3e0f641b52f3394e7c)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - add xmlns to AbacusStatic for Typst SVG parsing ([98cd019](https://github.com/antialias/soroban-abacus-flashcards/commit/98cd019d4af91d7ca4e7a88f700194273476afb7)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **web:** use AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-04) ### Features - **abacus-react:** add AbacusStatic for React Server Components ([3b8e864](https://github.com/antialias/soroban-abacus-flashcards/commit/3b8e864cfa3af50b1912ce7ff55003d7f6b9c229)) - **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:** add separate /static export path for React Server Components ([ed69f6b](https://github.com/antialias/soroban-abacus-flashcards/commit/ed69f6b917c543bbcaa4621a0e63745bee70f5bf)) - **abacus-react:** export new utilities, hooks, and themes ([ce4e44d](https://github.com/antialias/soroban-abacus-flashcards/commit/ce4e44d6302746053ad40dc61bab57ef3a0a9f31)) - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) - **web:** add test page for AbacusStatic RSC compatibility ([903dea2](https://github.com/antialias/soroban-abacus-flashcards/commit/903dea25844f1d2b3730fbcbd8478e7af1887663)) - **web:** add test page for AbacusStatic Server Component ([3588d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/3588d5acde25588ce4db3ee32adb04ace0e394d4)) - **web:** improve calendar abacus preview styling ([8439727](https://github.com/antialias/soroban-abacus-flashcards/commit/8439727b152accf61f0c28158b92788510ca086e)) ### Bug Fixes - **abacus-react:** correct column highlighting offset in AbacusStatic ([0641eb7](https://github.com/antialias/soroban-abacus-flashcards/commit/0641eb719ef56c67de965296006df666f83e5b08)) - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) - **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)) - **web:** use AbacusStatic for calendar SVG generation ([08c6a41](https://github.com/antialias/soroban-abacus-flashcards/commit/08c6a419e25d220560eba13d6db437145e6e61b8)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) - **web:** import utility functions from abacus-react ([7228bbc](https://github.com/antialias/soroban-abacus-flashcards/commit/7228bbc2eb8b9b2b861d32b760b14895a1a7ee8a)) - **web:** use ABACUS_THEMES instead of manual style definitions ([9f7f001](https://github.com/antialias/soroban-abacus-flashcards/commit/9f7f001d747402b1578116e45c1a137519714314)) - **web:** use compact prop for inline mini-abacus ([ff1d60a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff1d60a23387d22e7ed44185dc3a8c895b7c0d12)) ### Documentation - **abacus-react:** add Storybook stories for AbacusStatic ([4f9dc46](https://github.com/antialias/soroban-abacus-flashcards/commit/4f9dc4666d249c1c67c51a3901c4f657ff9723ef)) - **abacus-react:** add Storybook stories for new features ([6a1cec0](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1cec06a75575cb35ddca5ef573aaf13c2352f4)) - **abacus-react:** export AbacusStatic and update README ([74f2d97](https://github.com/antialias/soroban-abacus-flashcards/commit/74f2d97434620cb8c7d49912bca3bf386408a16d)) - **abacus-react:** update documentation for new features ([35d8734](https://github.com/antialias/soroban-abacus-flashcards/commit/35d8734a3a9124564957444d3642c9e7c4348fac)) - **abacus-react:** update README with /static import path for RSC ([72a4c2b](https://github.com/antialias/soroban-abacus-flashcards/commit/72a4c2b80c1158a6eaf21abe4e807ff6e70373ac)) - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) ### Bug Fixes - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) - verify compose-updater automatic deployment cycle ([af0552c](https://github.com/antialias/soroban-abacus-flashcards/commit/af0552ccd98f7b5a62d6e4074b7d87b3716af698)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - add unified trophy abacus with hero mode integration ([6620418](https://github.com/antialias/soroban-abacus-flashcards/commit/6620418a704dcca810b511a5f394084521104e6b)) - **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)) - **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)) - complete 3D enhancement integration for all three proposals ([5ac55cc](https://github.com/antialias/soroban-abacus-flashcards/commit/5ac55cc14980b778f9be32f0833f8760aa16b631)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - enable 3D enhancement on hero/open MyAbacus modes ([37e330f](https://github.com/antialias/soroban-abacus-flashcards/commit/37e330f26e5398c2358599361cd417b4aeefac7d)) - **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:** 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)) - **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)) - 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)) - 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)) - 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) ### Bug Fixes - adjust hero abacus position to avoid covering subtitle ([f03d341](https://github.com/antialias/soroban-abacus-flashcards/commit/f03d3413145cc7ddfba93728ecdec7eabea9ada6)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - copy entire packages/core and packages/templates ([0ccada0](https://github.com/antialias/soroban-abacus-flashcards/commit/0ccada0ca783e635f9ae08f33a69c392018ee342)) - correct hero abacus scroll direction to flow with page content ([4232746](https://github.com/antialias/soroban-abacus-flashcards/commit/423274657c9698bba28f7246fbf48d8508d97ef9)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - 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)) - resolve z-index layering and hero abacus visibility issues ([ed9a050](https://github.com/antialias/soroban-abacus-flashcards/commit/ed9a050d64db905e1328008f25dc0014e9a81999)) - rewrite 3D stories to use props instead of CSS wrappers ([26bdb11](https://github.com/antialias/soroban-abacus-flashcards/commit/26bdb112370cece08634e3d693d15336111fc70f)) - **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)) - 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 absolute positioning for hero abacus to eliminate scroll lag ([096104b](https://github.com/antialias/soroban-abacus-flashcards/commit/096104b094b45aa584f2b9d47a440a8c14d82fc0)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add 3D enhancement documentation to README ([cc96802](https://github.com/antialias/soroban-abacus-flashcards/commit/cc96802df87c805c946ee59af509663ba570e75b)) - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ### Tests - trigger compose-updater deployment test ([2b06aae](https://github.com/antialias/soroban-abacus-flashcards/commit/2b06aae39474cc80d501c47c9685fa99e7120c48)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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:** 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)) - **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)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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:** 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)) - **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)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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:** 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)) - **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)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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:** 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)) - **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)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add 3D printing support for abacus models ([dafdfdd](https://github.com/antialias/soroban-abacus-flashcards/commit/dafdfdd233b53464b9825a8a9b5f2e6206fc54cb)) - add comprehensive metadata, SEO, and make AbacusReact SSR-compatible ([0922ea1](https://github.com/antialias/soroban-abacus-flashcards/commit/0922ea10b77e7d16b8c414c596d23cb11e20c1cc)) - 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 Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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:** 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)) - **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)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - 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)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **nav:** show full navigation on /games page ([d3fe6ac](https://github.com/antialias/soroban-abacus-flashcards/commit/d3fe6acbb0390e1df71869a4095e5ee6021e06b1)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - **games:** remove redundant subtitle below nav ([ad5bb87](https://github.com/antialias/soroban-abacus-flashcards/commit/ad5bb87325a44825f0cd85b38eb0e5f0eea7a695)) - **games:** remove wheel scrolling, enable overflow visible carousel ([876513c](https://github.com/antialias/soroban-abacus-flashcards/commit/876513c9cc6323c20845ae8f1a3a5478d449f9e4)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - restructure /create page into hub with sub-pages ([b91b23d](https://github.com/antialias/soroban-abacus-flashcards/commit/b91b23d95ffaeeaa30dbc8579f4c30bae8829ee7)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### 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)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - install embla-carousel-react for player profile carousel ([642ae95](https://github.com/antialias/soroban-abacus-flashcards/commit/642ae957383cfe1d6045f645bbe426fd80c56f35)) - 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)) - 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)) - 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) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - configure favicon metadata and improve bead visibility ([e1369fa](https://github.com/antialias/soroban-abacus-flashcards/commit/e1369fa2754cd61745a2950e6cb767d6b08db38f)) - 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)) - extract pure SVG content from AbacusReact renders ([b07f1c4](https://github.com/antialias/soroban-abacus-flashcards/commit/b07f1c421616bcfd1f949f9a42ce1b03df418945)) - **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)) - include column posts in favicon bounding box ([0b2f481](https://github.com/antialias/soroban-abacus-flashcards/commit/0b2f48106a939307b728c86fe2ea1be1e0247ea8)) - 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)) - **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)) - reduce padding to minimize gap below last bead ([0e529be](https://github.com/antialias/soroban-abacus-flashcards/commit/0e529be789caf16e73f3e2ee77f52e243841aef4)) - **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)) - separate horizontal and vertical bounding box logic ([83090df](https://github.com/antialias/soroban-abacus-flashcards/commit/83090df4dfad1d1d5cfa6c278c241526cacc7972)) - use nested SVG viewBox for actual cropping, not just scaling ([440b492](https://github.com/antialias/soroban-abacus-flashcards/commit/440b492e85beff1612697346b6c5cfc8461e83da)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - **games:** move page title to nav bar ([712ee58](https://github.com/antialias/soroban-abacus-flashcards/commit/712ee58e5956e5bbdb13d5a5fb367020c87c8c9a)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### 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)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - **i18n:** update games page hero section copy ([6333c60](https://github.com/antialias/soroban-abacus-flashcards/commit/6333c60352b920916afd81cc3b0229706a1519fa)) - install embla-carousel-react for player profile carousel ([642ae95](https://github.com/antialias/soroban-abacus-flashcards/commit/642ae957383cfe1d6045f645bbe426fd80c56f35)) - 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)) - 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)) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - extract pure SVG content from AbacusReact renders ([b07f1c4](https://github.com/antialias/soroban-abacus-flashcards/commit/b07f1c421616bcfd1f949f9a42ce1b03df418945)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **games:** implement carousel, fix victories bug, add conditional stats ([82c133f](https://github.com/antialias/soroban-abacus-flashcards/commit/82c133f742f3f5c40b723c18d1997b518f25b320)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### 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)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - extract pure SVG content from AbacusReact renders ([b07f1c4](https://github.com/antialias/soroban-abacus-flashcards/commit/b07f1c421616bcfd1f949f9a42ce1b03df418945)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) - use AbacusReact for dynamic Open Graph image ([9c20f12](https://github.com/antialias/soroban-abacus-flashcards/commit/9c20f12bacff4fe7f8bd7a87032afbed9711e94b)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### 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)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - extract pure SVG content from AbacusReact renders ([b07f1c4](https://github.com/antialias/soroban-abacus-flashcards/commit/b07f1c421616bcfd1f949f9a42ce1b03df418945)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - reorganize Harmony and Victory guide sections ([fb629c4](https://github.com/antialias/soroban-abacus-flashcards/commit/fb629c44ea37a7b296561919a4980c10d14efed8)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-03) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) - **rithmomachia:** increase pyramid face numbers size and boldness ([7bf2d73](https://github.com/antialias/soroban-abacus-flashcards/commit/7bf2d730d370e562486b229f4d209099ff8c4463)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 pyramid face numbers when selected ([5c186f3](https://github.com/antialias/soroban-abacus-flashcards/commit/5c186f3947cc38f1f5db5de3e68e590b90c2d092)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) - **rithmomachia:** improve pyramid face numbers visibility and contrast ([94e5e6a](https://github.com/antialias/soroban-abacus-flashcards/commit/94e5e6a268b387380b88b192737bd55578b98bc7)), closes [#fbbf24](https://github.com/antialias/soroban-abacus-flashcards/issues/fbbf24) [#b45309](https://github.com/antialias/soroban-abacus-flashcards/issues/b45309) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 pyramid face numbers when selected ([5c186f3](https://github.com/antialias/soroban-abacus-flashcards/commit/5c186f3947cc38f1f5db5de3e68e590b90c2d092)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ### Styles - **rithmomachia:** improve divider styling and make tabs responsive ([88ca35e](https://github.com/antialias/soroban-abacus-flashcards/commit/88ca35e0440157ff9349e8d3d2d3cc844f18ffea)), closes [#e5e7](https://github.com/antialias/soroban-abacus-flashcards/issues/e5e7) [#9ca3](https://github.com/antialias/soroban-abacus-flashcards/issues/9ca3) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - add Strategy & Tactics section to Rithmomachia guide ([81ead65](https://github.com/antialias/soroban-abacus-flashcards/commit/81ead65680892efa4d0ab07e7f0ef77eb1bc1405)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** improve guide pieces section layout ([a270bfc](https://github.com/antialias/soroban-abacus-flashcards/commit/a270bfc0cc4a3b6b54ba43a5af14a227cc7d29f9)) - **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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** 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:** 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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** 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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 CaptureContext for capture dialog state management ([d7eb957](https://github.com/antialias/soroban-abacus-flashcards/commit/d7eb957a8dabbcac35e166a83dd679a628e19baa)) - **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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-02) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 CaptureContext for capture dialog state management ([d7eb957](https://github.com/antialias/soroban-abacus-flashcards/commit/d7eb957a8dabbcac35e166a83dd679a628e19baa)) - **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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract board and capture components (phase 2+3) ([a0a867b](https://github.com/antialias/soroban-abacus-flashcards/commit/a0a867b27166a838ca7e0dcbd8f89fe1be812a80)) - **rithmomachia:** extract CaptureErrorDialog component (Phase 2 partial) ([f0a066d](https://github.com/antialias/soroban-abacus-flashcards/commit/f0a066d8f0a51d35e18f87a8436c0d05153c03b5)) - **rithmomachia:** extract constants and coordinate utilities (Phase 1) ([eace0ed](https://github.com/antialias/soroban-abacus-flashcards/commit/eace0ed52979b71870f77ee68f8568558f2aaecb)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** extract hooks (phase 5) ([324a659](https://github.com/antialias/soroban-abacus-flashcards/commit/324a65992f97c295ea3968aaf54d266373f4c035)) - **rithmomachia:** extract phase components (phase 4) ([11364f6](https://github.com/antialias/soroban-abacus-flashcards/commit/11364f6394c15e49850e5cad2cbd32e1ea08a178)) - **rithmomachia:** extract reusable components from SetupPhase ([3abc325](https://github.com/antialias/soroban-abacus-flashcards/commit/3abc325ea27feee5c4cc59f02296ff218f342a81)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) - **rithmomachia:** update capture components to use CaptureContext ([2ab6ab5](https://github.com/antialias/soroban-abacus-flashcards/commit/2ab6ab57995a6d7d9c66b9fba8de945507209661)) - **rithmomachia:** use useBoardLayout and usePieceSelection in BoardDisplay ([0ab7a1d](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab7a1df327d7258228af9851762555583a20d61)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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 tutorial player ([26d41cf](https://github.com/antialias/soroban-abacus-flashcards/commit/26d41cfd058bfdf5b61ee6e20cfc61cbecb32f45)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **i18n:** eliminate FOUC by loading messages server-side ([4d4d930](https://github.com/antialias/soroban-abacus-flashcards/commit/4d4d930bd307ce5a405fc5751af6682a9f221f1f)) - 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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **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:** 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)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **i18n:** eliminate FOUC by loading messages server-side ([4d4d930](https://github.com/antialias/soroban-abacus-flashcards/commit/4d4d930bd307ce5a405fc5751af6682a9f221f1f)) - 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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add database migration guide and playing guide modal spec ([5a29af7](https://github.com/antialias/soroban-abacus-flashcards/commit/5a29af78e27e897ab35273611b79c4b669304f71)) - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **abacus:** add nativeAbacusNumbers setting to schema and UI ([79f7347](https://github.com/antialias/soroban-abacus-flashcards/commit/79f7347d4800646378470a7f9aca8e7f2fd5573c)) - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-11-01) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 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:** 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:** 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:** recreate original guide modal header layout ([2489695](https://github.com/antialias/soroban-abacus-flashcards/commit/24896957d0817758c5f64c0e3473e6a0a343af67)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** 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 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:** implement proper board cropping and highlighting in guide ([d0a8fcd](https://github.com/antialias/soroban-abacus-flashcards/commit/d0a8fcdea6aa4fdacfee33e183c92923634ee2b7)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** extract guide sections into separate files ([765525d](https://github.com/antialias/soroban-abacus-flashcards/commit/765525dc451897f561f017e444aae892dc27177f)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) - **rithmomachia:** Update board setup to authoritative CSV layout ([0471da5](https://github.com/antialias/soroban-abacus-flashcards/commit/0471da598d8d591b3f9d63f467cb35f999924c13)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - **rithmomachia:** Add concise one-page playing guide ([e3c1f10](https://github.com/antialias/soroban-abacus-flashcards/commit/e3c1f10233cc0924ff96a643c7c4c1f1278de3e3)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-31) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** 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:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-31) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-31) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** 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:** 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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-31) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** reconnect player assignment UI and fix setup layout ([a1a0374](https://github.com/antialias/soroban-abacus-flashcards/commit/a1a0374fac5dce676df5890663b75531589ed93a)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - 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)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** make setup phase UI more compact ([e55f848](https://github.com/antialias/soroban-abacus-flashcards/commit/e55f848a26092a2b4a5b09c3c255544ea9666f1b)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - 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 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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### 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)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **arcade:** add ability to deactivate remote players without kicking user ([3628426](https://github.com/antialias/soroban-abacus-flashcards/commit/3628426a567d7e0273be75cce64632ae04b7d5eb)) - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** 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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** improve roster status notice UX ([e27df45](https://github.com/antialias/soroban-abacus-flashcards/commit/e27df45256147f958ca215f9dd1f4e133e8cf06c)) - **rithmomachia:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** 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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-30) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** improve roster status notice UX ([e27df45](https://github.com/antialias/soroban-abacus-flashcards/commit/e27df45256147f958ca215f9dd1f4e133e8cf06c)) - **rithmomachia:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** improve roster status notice UX ([e27df45](https://github.com/antialias/soroban-abacus-flashcards/commit/e27df45256147f958ca215f9dd1f4e133e8cf06c)) - **rithmomachia:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** redesign error notification with modern UI ([dfeeb0e](https://github.com/antialias/soroban-abacus-flashcards/commit/dfeeb0e0db8b2c4a38198cf71cd918439d6c211b)), closes [#1e293](https://github.com/antialias/soroban-abacus-flashcards/issues/1e293) [#0f172](https://github.com/antialias/soroban-abacus-flashcards/issues/0f172) [#f1f5f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f1f5f9) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** adjust error dialog sizing to prevent text clipping ([cda1126](https://github.com/antialias/soroban-abacus-flashcards/commit/cda1126cb0eab6840df89f3a8778d72410298093)) - **rithmomachia:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) - **rithmomachia:** simplify capture error dialog to one-liner ([82a5eb2](https://github.com/antialias/soroban-abacus-flashcards/commit/82a5eb2e4bf74f42a183a15f1129e5ec84cc5231)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **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 number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **rithmomachia:** show actual values in tooltips for non-helper relations ([774c6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/774c6b0ce712b1a77bb684457da9831e6ec91138)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **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:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **rithmomachia:** enhance capture relation UI with smooth animations ([0a30801](https://github.com/antialias/soroban-abacus-flashcards/commit/0a308016e9d6a926c52dbfc5623b60b169d16d03)) - **rithmomachia:** skip helper selection UI and auto-select first valid helper ([be2a00e](https://github.com/antialias/soroban-abacus-flashcards/commit/be2a00e8b366b5606525309b4c7813f5c35c7f7c)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **rithmomachia:** enhance capture relation UI with smooth animations ([0a30801](https://github.com/antialias/soroban-abacus-flashcards/commit/0a308016e9d6a926c52dbfc5623b60b169d16d03)) - **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)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** add number bond visualization and helper placeholders ([82d8913](https://github.com/antialias/soroban-abacus-flashcards/commit/82d89131f00517f162ec496397cb390f9ecfc52e)) - **rithmomachia:** enhance capture relation UI with smooth animations ([0a30801](https://github.com/antialias/soroban-abacus-flashcards/commit/0a308016e9d6a926c52dbfc5623b60b169d16d03)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **rithmomachia:** add helper piece selection for mathematical captures ([cae3359](https://github.com/antialias/soroban-abacus-flashcards/commit/cae335958751c27684bfb10c8e2e526b460954ed)) - **rithmomachia:** enhance capture relation UI with smooth animations ([0a30801](https://github.com/antialias/soroban-abacus-flashcards/commit/0a308016e9d6a926c52dbfc5623b60b169d16d03)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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:** correct makeMove parameter types for capture handling ([aafb64f](https://github.com/antialias/soroban-abacus-flashcards/commit/aafb64f3e337c6cf925766fe179b91f66c4a040b)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **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)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-29) ### Features - **arcade:** add Rithmomachia (Battle of Numbers) game ([2fc0a05](https://github.com/antialias/soroban-abacus-flashcards/commit/2fc0a05f7f557cee55f7d31b585499dd04e68ff9)) - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-25) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-25) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - increase server update debounce to 2000ms for low bandwidth ([633ff12](https://github.com/antialias/soroban-abacus-flashcards/commit/633ff127500c893a215491afa0e6ff814ad553bf)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-25) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - 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)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Performance Improvements - optimize Docker image size to reduce build failures ([9ca3106](https://github.com/antialias/soroban-abacus-flashcards/commit/9ca310636183f4970db925ce8fa368e23645eb02)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - optimize card sorting for mobile displays ([b443ee9](https://github.com/antialias/soroban-abacus-flashcards/commit/b443ee9cdcd9fcb7674845d8c92f7c338ad98dea)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - delete existing user sessions before creating new ones ([0cced47](https://github.com/antialias/soroban-abacus-flashcards/commit/0cced47a0f414a04371bdb253fc5a43e4d9557be)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** remove reveal numbers feature ([ea5e3e8](https://github.com/antialias/soroban-abacus-flashcards/commit/ea5e3e838bd6a5b8b38469a70aa92a0e9baba769)) - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **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 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:** 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:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **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:** 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 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:** 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 same coordinate system for game board and results ([6972fdf](https://github.com/antialias/soroban-abacus-flashcards/commit/6972fdf1105b6e854494efe1c4c587e6b6ff32a9)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add missing gameMode support after hard reset ([a832325](https://github.com/antialias/soroban-abacus-flashcards/commit/a832325debde289d6928c5e6f9c24311c5e079ad)) - **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:** 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:** 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 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:** 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 same coordinate system for game board and results ([6972fdf](https://github.com/antialias/soroban-abacus-flashcards/commit/6972fdf1105b6e854494efe1c4c587e6b6ff32a9)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add missing gameMode support after hard reset ([a832325](https://github.com/antialias/soroban-abacus-flashcards/commit/a832325debde289d6928c5e6f9c24311c5e079ad)) - **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:** 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:** 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:** 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 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:** 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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:** wrap prefix/suffix cards to multiple rows ([e3184dd](https://github.com/antialias/soroban-abacus-flashcards/commit/e3184dd0d444e5dc204731f5b396d5c553cf7d11)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add missing gameMode support after hard reset ([a832325](https://github.com/antialias/soroban-abacus-flashcards/commit/a832325debde289d6928c5e6f9c24311c5e079ad)) - **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:** 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:** 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:** 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 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:** 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-24) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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:** 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:** wrap prefix/suffix cards to multiple rows ([e3184dd](https://github.com/antialias/soroban-abacus-flashcards/commit/e3184dd0d444e5dc204731f5b396d5c553cf7d11)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add missing gameMode support after hard reset ([a832325](https://github.com/antialias/soroban-abacus-flashcards/commit/a832325debde289d6928c5e6f9c24311c5e079ad)) - **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:** 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:** 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:** 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 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:** 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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 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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - **card-sorting:** add comprehensive multiplayer plan ([008ccea](https://github.com/antialias/soroban-abacus-flashcards/commit/008ccead0f9c634fe52fd156e6f9a04d6cdd7744)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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 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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **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)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **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 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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 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)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** keep arrow sequence numbers upright ([79c9469](https://github.com/antialias/soroban-abacus-flashcards/commit/79c94699fa1cc2a2886e3ab1addc5fcd975602f5)) - **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 position jump when clicking rotated cards ([564a00f](https://github.com/antialias/soroban-abacus-flashcards/commit/564a00f82b6ca6aa8a2c0586ca49fc42d44991a8)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **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 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 updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **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 position jump when clicking rotated cards ([564a00f](https://github.com/antialias/soroban-abacus-flashcards/commit/564a00f82b6ca6aa8a2c0586ca49fc42d44991a8)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **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 react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **card-sorting:** improve card distribution for natural scattered look ([0b0503f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b0503f0354a4a82fe6b9bfe827729e8e5a9e329)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add border radius to outer card container ([a922eba](https://github.com/antialias/soroban-abacus-flashcards/commit/a922eba73c4656ee941ce4dfb1dc57a62f076570)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** add overflow hidden to clip rounded corners ([84c66fe](https://github.com/antialias/soroban-abacus-flashcards/commit/84c66feec6b4112b015e1afd95bf33b24b5f6a4f)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **card-sorting:** prevent duplicate START_GAME moves on Play Again ([a0b14f8](https://github.com/antialias/soroban-abacus-flashcards/commit/a0b14f87e9c5b32fcbb685da4e70c563f70ed91a)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **card-sorting:** preserve card positions on pause/resume ([0d8af09](https://github.com/antialias/soroban-abacus-flashcards/commit/0d8af09517534f1e1cf1f57160391d465a279d76)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **card-sorting:** add CardPosition type and position syncing ([656f5a7](https://github.com/antialias/soroban-abacus-flashcards/commit/656f5a7838ed6003c214ec484d4c37072270fa8d)) - **card-sorting:** add react-spring animations for real-time sync ([c367e0c](https://github.com/antialias/soroban-abacus-flashcards/commit/c367e0ceece41d8e7c2bc8aebe3239ff6053a115)) - **card-sorting:** add updateCardPositions action to Provider ([f6ed4a2](https://github.com/antialias/soroban-abacus-flashcards/commit/f6ed4a27a26d8bfa495ba5f580a446286b9674a0)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **arcade:** add automatic retry for version conflict rejections ([fbcde25](https://github.com/antialias/soroban-abacus-flashcards/commit/fbcde2505f7ff2bf3426f3458e480c4548314ba4)) - **arcade:** implement optimistic locking in session manager ([71fd66d](https://github.com/antialias/soroban-abacus-flashcards/commit/71fd66d96a3b03650c90f59f6e516aae7dddc345)) - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Code Refactoring - **card-sorting:** send complete card sequence instead of individual moves ([e4df843](https://github.com/antialias/soroban-abacus-flashcards/commit/e4df8432b9c4a2055d47833d56b6e9fcf325ca94)) ### Documentation - add deployment verification guidelines to prevent false positives ([3d8da23](https://github.com/antialias/soroban-abacus-flashcards/commit/3d8da2348b4e8a227e963791d15dc6718eac5af1)) - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0) (2025-10-23) ### Features - **arcade:** auto-create room when user has none ([ff88c3a](https://github.com/antialias/soroban-abacus-flashcards/commit/ff88c3a1b81703a87a1d57eeb5cc139da7d9df04)) - **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2](https://github.com/antialias/soroban-abacus-flashcards/commit/83d0ba26f5eeec3e189d279710d5bbcf13e82f29)) - **room-share:** add QR code button for easy mobile joining ([349290a](https://github.com/antialias/soroban-abacus-flashcards/commit/349290ac6a411651686b64d2e6b540083d2df1d9)) ### Bug Fixes - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) - **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)) - **room-info:** hide Leave Room button when user is alone ([5927f61](https://github.com/antialias/soroban-abacus-flashcards/commit/5927f61c3c34ba583ee45c8cee48a116c1c03071)) ### Documentation - update workflow to require manual testing before commits ([0991796](https://github.com/antialias/soroban-abacus-flashcards/commit/0991796f1eccef345f10205e675e4c33d1a62b17)) ## [4.67.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.67.2) (2025-10-23) ### Bug Fixes - **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee](https://github.com/antialias/soroban-abacus-flashcards/commit/e1258ee0416010909774694c0b25306b6f30329c)) ## [4.67.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.0...v4.67.1) (2025-10-22) ### Bug Fixes - **complement-race:** fix react-spring interpolation TypeScript errors ([0add9e4](https://github.com/antialias/soroban-abacus-flashcards/commit/0add9e4ef1d69e4e92ffe279cce09c68efa43714)) ## [4.67.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.2...v4.67.0) (2025-10-22) ### Features - **complement-race:** add react-spring animations to ghost trains for smooth movement ([eb3700a](https://github.com/antialias/soroban-abacus-flashcards/commit/eb3700a57d035a142c64b60d5d1b21181d21b69f)) ## [4.66.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.1...v4.66.2) (2025-10-22) ### Bug Fixes - **complement-race:** fix ghost train position update lag and reload position reset ([ad78a65](https://github.com/antialias/soroban-abacus-flashcards/commit/ad78a65ed7f63509602e79246e3761653ea39a15)) ## [4.66.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.0...v4.66.1) (2025-10-22) ### Bug Fixes - **complement-race:** ensure continuous position broadcasting during train movement ([df60824](https://github.com/antialias/soroban-abacus-flashcards/commit/df60824f37f52e77e69d32c26926a24e1af88e66)) ## [4.66.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.65.1...v4.66.0) (2025-10-22) ### Features - **complement-race:** implement per-car adaptive opacity for ghost trains ([9b1d47d](https://github.com/antialias/soroban-abacus-flashcards/commit/9b1d47d4c7bdaf44f3921ff99971dfb3b65442bd)) ## [4.65.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.65.0...v4.65.1) (2025-10-22) ### Bug Fixes - **complement-race:** use sendMove with correct parameters for position updates ([06cd94b](https://github.com/antialias/soroban-abacus-flashcards/commit/06cd94b24cdd9dbd36fb5800c9ba7be194f7eed0)) ## [4.65.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.2...v4.65.0) (2025-10-22) ### Features - **complement-race:** implement position broadcasting for ghost trains ([c5fba5b](https://github.com/antialias/soroban-abacus-flashcards/commit/c5fba5b7dd0f36fd3bbe596409e01b0d3dbd4fbe)) ## [4.64.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.1...v4.64.2) (2025-10-22) ### Bug Fixes - **complement-race:** use individual player positions for ghost trains ([00dc4b1](https://github.com/antialias/soroban-abacus-flashcards/commit/00dc4b1d06a4e1763deb16333a298145cafd9187)) ## [4.64.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.0...v4.64.1) (2025-10-22) ### Bug Fixes - **complement-race:** use local player instead of first player for train display ([915d8a5](https://github.com/antialias/soroban-abacus-flashcards/commit/915d8a5343e70a30c7a82bed645e6628fcc08a86)) ## [4.64.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.11...v4.64.0) (2025-10-22) ### Features - **complement-race:** add ghost trains for multiplayer visibility ([7668cc9](https://github.com/antialias/soroban-abacus-flashcards/commit/7668cc9b113b3eae2acb1b852b0ad48c979e6604)) ## [4.63.11](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.10...v4.63.11) (2025-10-22) ### Bug Fixes - **complement-race:** actually filter by isActive instead of just id ([ef4ca57](https://github.com/antialias/soroban-abacus-flashcards/commit/ef4ca57a6c3f35d1bddc6a70952f478058fbc6b5)) ## [4.63.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.9...v4.63.10) (2025-10-22) ### Bug Fixes - **complement-race:** show only first active player's passengers on train ([2bfd5d2](https://github.com/antialias/soroban-abacus-flashcards/commit/2bfd5d2bda7f7d2d83c69f75600ab461fde15d92)) ## [4.63.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.8...v4.63.9) (2025-10-21) ### Bug Fixes - **homepage:** use app-wide abacus config in interactive flashcards ([cf1be2d](https://github.com/antialias/soroban-abacus-flashcards/commit/cf1be2d1730543bd30836a87d9cbdfd2cf48360e)) ## [4.63.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.7...v4.63.8) (2025-10-21) ### Bug Fixes - **mobile:** restore abacus visibility in "Your Journey" section ([c96036d](https://github.com/antialias/soroban-abacus-flashcards/commit/c96036d86b6de2e25f7ecd3d00dd36221badc3b1)) ## [4.63.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.6...v4.63.7) (2025-10-21) ### Bug Fixes - **mobile:** reduce height of Your Journey section on mobile ([8944035](https://github.com/antialias/soroban-abacus-flashcards/commit/89440355bf494e54072d2d1a1f228c33ec43d52d)) ## [4.63.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.5...v4.63.6) (2025-10-21) ### Bug Fixes - **mobile:** optimize Your Journey section for iPhone displays ([9167fb4](https://github.com/antialias/soroban-abacus-flashcards/commit/9167fb40d68b7bdbe310b647083586434ceb6043)) ## [4.63.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.4...v4.63.5) (2025-10-21) ### Bug Fixes - **flashcards:** store grab offset in local coordinates to prevent jump ([39d93a9](https://github.com/antialias/soroban-abacus-flashcards/commit/39d93a9e9f48a7d1ce10763cad62a600851a41d5)) ## [4.63.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.3...v4.63.4) (2025-10-21) ### Bug Fixes - **flashcards:** keep grab point under cursor with proper coordinate conversion ([1869216](https://github.com/antialias/soroban-abacus-flashcards/commit/1869216d2fda77303c0b79d4f613c6dcdaf5324b)) ## [4.63.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.2...v4.63.3) (2025-10-21) ### Bug Fixes - **flashcards:** revert to simple delta positioning to prevent card jumping ([d018b69](https://github.com/antialias/soroban-abacus-flashcards/commit/d018b699c46aea90e9cdc3309e797ff2d7447ecf)) ## [4.63.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.1...v4.63.2) (2025-10-21) ### Bug Fixes - **flashcards:** correct pivot point to rotate around card center ([50fc3fd](https://github.com/antialias/soroban-abacus-flashcards/commit/50fc3fdf7f2c9b7412f6d7d890f5e0d52cb86a9b)) ## [4.63.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.0...v4.63.1) (2025-10-21) ### Bug Fixes - **flashcards:** increase rotation sensitivity 10x for visible grab point physics ([c0fa926](https://github.com/antialias/soroban-abacus-flashcards/commit/c0fa926d16d02c1bfe880b7f0056a760e8461b3b)) ## [4.63.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.62.1...v4.63.0) (2025-10-21) ### Features - **flashcards:** add grab point physics for realistic rotation ([bf37eb1](https://github.com/antialias/soroban-abacus-flashcards/commit/bf37eb1928de8d07673234e2faa1fa6268c45686)) ## [4.62.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.62.0...v4.62.1) (2025-10-21) ### Bug Fixes - **flashcards:** improve shadow speed logging with separate throttling ([0f51366](https://github.com/antialias/soroban-abacus-flashcards/commit/0f51366fd56540e691df4931b6350c03043484f1)) ## [4.62.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.3...v4.62.0) (2025-10-21) ### Features - **flashcards:** add dynamic shadow based on drag speed ([92148a4](https://github.com/antialias/soroban-abacus-flashcards/commit/92148a4cf87e828ba2e5ec1740fb51d9667c1d73)) ## [4.61.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.2...v4.61.3) (2025-10-21) ### Code Refactoring - **flashcards:** completely rewrite drag-drop with simple approach ([5f0ad14](https://github.com/antialias/soroban-abacus-flashcards/commit/5f0ad14133340d073e861f5721cb48e1abab03ff)) ## [4.61.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.1...v4.61.2) (2025-10-21) ### Bug Fixes - **flashcards:** use explicit per-property configs to fix decay physics ([f32480a](https://github.com/antialias/soroban-abacus-flashcards/commit/f32480a0f9153285341e5a28078840abc0590873)) ## [4.61.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.0...v4.61.1) (2025-10-21) ### Bug Fixes - **flashcards:** fix position snap-back by using api.set before decay ([30e16c8](https://github.com/antialias/soroban-abacus-flashcards/commit/30e16c8e5ac3bb25f2d54cf715dc6fb45adc4fcc)) ## [4.61.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.60.0...v4.61.0) (2025-10-21) ### Features - **flashcards:** enable unbounded drag and position persistence ([ad1ad69](https://github.com/antialias/soroban-abacus-flashcards/commit/ad1ad690f014257b5a3c3f599e794205a11d286f)) ## [4.60.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.59.1...v4.60.0) (2025-10-21) ### Features - **homepage:** significantly increase mobile hero abacus size ([424f41d](https://github.com/antialias/soroban-abacus-flashcards/commit/424f41d4bfc1ddea068f8c110b495ebd5c0bb455)) ## [4.59.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.59.0...v4.59.1) (2025-10-21) ### Bug Fixes - **homepage:** adjust hero abacus scale for optimal sizing across devices ([86dee31](https://github.com/antialias/soroban-abacus-flashcards/commit/86dee31c9a51ca0712f1b4181a4899d25374d403)) - **homepage:** reduce mobile abacus scale to prevent scroll hint overlap ([b8235be](https://github.com/antialias/soroban-abacus-flashcards/commit/b8235be612c3f1dbd0da2b6cd1a935001b7dac9b)) ## [4.59.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.2...v4.59.0) (2025-10-21) ### Features - **homepage:** increase hero abacus size for better visibility ([7666b0a](https://github.com/antialias/soroban-abacus-flashcards/commit/7666b0aea949f2432a4d0f4648c1a366af3ea6d2)) ## [4.58.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.1...v4.58.2) (2025-10-21) ### Code Refactoring - **navbar:** prevent subtitle wrap and remove abacus emoji ([a58f7b7](https://github.com/antialias/soroban-abacus-flashcards/commit/a58f7b78b0020c85da523c36fdf6d70ad069736a)) ## [4.58.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.0...v4.58.1) (2025-10-21) ### Bug Fixes - **navbar:** apply glassmorphism to transparent mode, not scrolled mode ([8893675](https://github.com/antialias/soroban-abacus-flashcards/commit/8893675b36b1c1534c6fe7e57fa7e0cc55f198d6)) ## [4.58.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.10...v4.58.0) (2025-10-21) ### Features - **navbar:** add glassmorphism effect to nav links when scrolled ([89b9072](https://github.com/antialias/soroban-abacus-flashcards/commit/89b90723b7a3fc9ed12da3ba8718fccb6ce0760f)) ## [4.57.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.9...v4.57.10) (2025-10-21) ### Bug Fixes - **navbar:** remove border artifact and add 10px bottom fade ([d5f60ce](https://github.com/antialias/soroban-abacus-flashcards/commit/d5f60ce9d2fbc2a870b3bb96f5365a0e04e0afc4)) ### Styles - **navbar:** improve theming to match homepage dark aesthetic ([284fc90](https://github.com/antialias/soroban-abacus-flashcards/commit/284fc90a53f5f4868a3e41421760ebc813be12b5)) ## [4.57.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.8...v4.57.9) (2025-10-21) ### Bug Fixes - **homepage:** add overflow hidden to Your Journey section ([415a1fb](https://github.com/antialias/soroban-abacus-flashcards/commit/415a1fb1faa263c9d69b4e781ce22da235ca2b66)) ## [4.57.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.7...v4.57.8) (2025-10-21) ### Bug Fixes - **homepage:** adjust responsive breakpoints to prevent skill card clipping ([62ff067](https://github.com/antialias/soroban-abacus-flashcards/commit/62ff067bb956b17a9b3569eadc2a32abd24c27b8)) ## [4.57.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.6...v4.57.7) (2025-10-21) ### Bug Fixes - **homepage:** restructure layout to center 1400px wide demo section ([61403f2](https://github.com/antialias/soroban-abacus-flashcards/commit/61403f2f506557b57716a298d4dc481d7853552f)) - **homepage:** set min-width 1400px on container and remove max-width ([aa297d4](https://github.com/antialias/soroban-abacus-flashcards/commit/aa297d4ef7559473a147934766bfa3868552f58d)) ## [4.57.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.5...v4.57.6) (2025-10-21) ### Bug Fixes - **homepage:** increase skill cards container width to prevent title wrapping ([cd3eb61](https://github.com/antialias/soroban-abacus-flashcards/commit/cd3eb61cb59e6faef37fbf609f37f7e2dc302e72)) ## [4.57.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.4...v4.57.5) (2025-10-21) ### Bug Fixes - **homepage:** prevent text overflow in skill cards ([a6ac55b](https://github.com/antialias/soroban-abacus-flashcards/commit/a6ac55b7b161e0dd33a4dd5acc0df647b2a513aa)) ## [4.57.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.3...v4.57.4) (2025-10-21) ### Bug Fixes - **homepage:** align container width breakpoint with grid columns ([422bf3d](https://github.com/antialias/soroban-abacus-flashcards/commit/422bf3d968b67e4683ac7ea7e487a84513f992f9)) - **homepage:** make MiniAbacus fill container properly ([3b5d147](https://github.com/antialias/soroban-abacus-flashcards/commit/3b5d14765dfb2d61a76f66ba3ae09695ce88bb6d)) - **homepage:** widen skill cards container to 650px ([bc1ad3a](https://github.com/antialias/soroban-abacus-flashcards/commit/bc1ad3a43a79570e1f9c61d5118d14ac4c201d71)) ## [4.57.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.2...v4.57.3) (2025-10-21) ### Bug Fixes - **homepage:** increase abacus container width to 120px/150px ([57c212f](https://github.com/antialias/soroban-abacus-flashcards/commit/57c212f4f5be591f712e1c5610e1f323e56e15dd)) ## [4.57.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.1...v4.57.2) (2025-10-21) ### Bug Fixes - **homepage:** increase skill card abacus container width ([e65e969](https://github.com/antialias/soroban-abacus-flashcards/commit/e65e96952f4e631722c73fc56d088fa3ff1ba858)) ## [4.57.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.0...v4.57.1) (2025-10-21) ### Bug Fixes - **homepage:** add overflow hidden to skill cards ([5070d8d](https://github.com/antialias/soroban-abacus-flashcards/commit/5070d8d64f7f58887ff7259bee9ce5166c4f8af8)) ## [4.57.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.56.0...v4.57.0) (2025-10-21) ### Features - **homepage:** make skills section responsive with emojis ([9ec0a71](https://github.com/antialias/soroban-abacus-flashcards/commit/9ec0a71546ee483233ed7866dae97345bf2384d7)) ### Bug Fixes - **homepage:** prevent skill card overflow ([fa26acf](https://github.com/antialias/soroban-abacus-flashcards/commit/fa26acfbaef1a04bb225956b2f684cd5023b56fa)) ## [4.56.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.55.0...v4.56.0) (2025-10-20) ### Features - **homepage:** emphasize single-player and observer modes ([a537bc1](https://github.com/antialias/soroban-abacus-flashcards/commit/a537bc18c34d94ca931e483ea01e497d6f5d4e5b)) ## [4.55.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.54.0...v4.55.0) (2025-10-20) ### Features - **homepage:** update section title to "The Arcade" ([f47b172](https://github.com/antialias/soroban-abacus-flashcards/commit/f47b172f66bee0017c11d8f129f5b83f2ef3dcd9)) ## [4.54.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.53.0...v4.54.0) (2025-10-20) ### Features - **homepage:** add interactive levels slider to replace static progression ([8a2d5ae](https://github.com/antialias/soroban-abacus-flashcards/commit/8a2d5ae319af8fd66010dd5538e4b82f7fb35d40)) ### Code Refactoring - **levels:** extract levels slider into shared component ([015e30b](https://github.com/antialias/soroban-abacus-flashcards/commit/015e30b085ad2ef798ffd6f7f6716269e3256651)) ## [4.53.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.52.2...v4.53.0) (2025-10-20) ### Features - **homepage:** add interactive draggable flashcards with physics ([0744883](https://github.com/antialias/soroban-abacus-flashcards/commit/074488349a3ec480548223c313006aa1e9e64e5c)) ### Code Refactoring - **homepage:** merge flashcard display with create button section ([3cf4f92](https://github.com/antialias/soroban-abacus-flashcards/commit/3cf4f92643306f055188ede508557515ef5efe98)) ## [4.52.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.52.1...v4.52.2) (2025-10-20) ### Bug Fixes - **homepage:** use actual container dimensions for flashcard positioning ([4082a24](https://github.com/antialias/soroban-abacus-flashcards/commit/4082a246a33ea67617b762d5b7490a8c9af0ad49)) ## [4.52.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.52.0...v4.52.1) (2025-10-20) ### Bug Fixes - **homepage:** correct flashcard transform rendering ([5dc636a](https://github.com/antialias/soroban-abacus-flashcards/commit/5dc636a71c15db28c029fd4f60e4a6c95620f953)) ## [4.52.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.51.0...v4.52.0) (2025-10-20) ### Features - **homepage:** add interactive draggable flashcards with physics ([e711c52](https://github.com/antialias/soroban-abacus-flashcards/commit/e711c527574412de2f9d451c7985c4f8667d269a)) ## [4.51.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.50.1...v4.51.0) (2025-10-20) ### Features - **homepage:** create fancy flashcard display with spread-out cards ([cd30944](https://github.com/antialias/soroban-abacus-flashcards/commit/cd30944c5e067f84d00dfdf41c37580acc589548)) ## [4.50.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.50.0...v4.50.1) (2025-10-20) ### Bug Fixes - **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)) ## [4.50.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.49.1...v4.50.0) (2025-10-20) ### Features - **homepage:** add interactive learning panels with animated mini-tutorials ([76d6f19](https://github.com/antialias/soroban-abacus-flashcards/commit/76d6f19d51fe4b9594998ae4e0a8823aff389854)) ## [4.49.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.49.0...v4.49.1) (2025-10-20) ### Code Refactoring - **homepage:** streamline homepage sections ([d362a77](https://github.com/antialias/soroban-abacus-flashcards/commit/d362a770d63405efee5ef8a896d34e783dd11de2)) ## [4.49.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.5...v4.49.0) (2025-10-20) ### Features - 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) ### Code Refactoring - make homepage game cards dynamic from game registry ([7f51652](https://github.com/antialias/soroban-abacus-flashcards/commit/7f516526fb5f5b60c1782db5c8c3e29f05caafa7)) ## [4.48.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.4...v4.48.5) (2025-10-20) ### Bug Fixes - **homepage:** add dark gradient overlay for better text contrast on game cards ([6410b21](https://github.com/antialias/soroban-abacus-flashcards/commit/6410b21f829810af27e42d188295630bd67d6b6b)) ## [4.48.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.3...v4.48.4) (2025-10-20) ### Bug Fixes - **homepage:** improve text contrast on game cards with text shadows ([b6410c7](https://github.com/antialias/soroban-abacus-flashcards/commit/b6410c7c225f01f42d095ca270b8da7903cbfbb0)) ## [4.48.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.2...v4.48.3) (2025-10-20) ### Bug Fixes - **homepage:** display gradient backgrounds on all game cards ([c6dc210](https://github.com/antialias/soroban-abacus-flashcards/commit/c6dc210bf8e3a5b4d7d6e53f2a7427d335c65322)) ### Documentation - **z-index:** add comprehensive z-index and stacking context documentation ([c89aea7](https://github.com/antialias/soroban-abacus-flashcards/commit/c89aea744478696b6f812fe53311a2dba210540f)) ## [4.48.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.1...v4.48.2) (2025-10-20) ### Bug Fixes - **nav:** ensure nav bar appears above tutorial tooltips ([cc31564](https://github.com/antialias/soroban-abacus-flashcards/commit/cc315645de30218d1b034da3e130458fe2961a69)) ### Styles - **hero:** unify background with rest of homepage ([035d831](https://github.com/antialias/soroban-abacus-flashcards/commit/035d8312c707cbf5b0e2a725d7b1d8ff406f842d)) ## [4.48.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.48.0...v4.48.1) (2025-10-20) ### Bug Fixes - **hero:** prevent SSR hydration mismatch for subtitle ([1bfde8f](https://github.com/antialias/soroban-abacus-flashcards/commit/1bfde8fb251b227ccd2528bfe1c47acffd79fa49)) ## [4.48.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.47.2...v4.48.0) (2025-10-20) ### Features - **hero:** persist random subtitle per-session ([318f946](https://github.com/antialias/soroban-abacus-flashcards/commit/318f9469a0805c200c55ce4024a95fd7b8dbe6a2)) ## [4.47.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.47.1...v4.47.2) (2025-10-20) ### Bug Fixes - **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)) ## [4.47.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.47.0...v4.47.1) (2025-10-20) ### Bug Fixes - **hero:** prevent nav thrashing with hysteresis ([71b1b93](https://github.com/antialias/soroban-abacus-flashcards/commit/71b1b933b598c0a6a8aef1bc9f8c598c1871b2eb)) ## [4.47.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.46.2...v4.47.0) (2025-10-20) ### Features - **nav:** add transparent nav bar with borders when hero visible ([463841e](https://github.com/antialias/soroban-abacus-flashcards/commit/463841e1910f4ddb9af662f036e4efb867836a83)) ### Bug Fixes - **hero:** use Number.isNaN instead of global isNaN ([c229faf](https://github.com/antialias/soroban-abacus-flashcards/commit/c229faffac525f3eebeb12155cb5ca4dff744472)) ### Styles - **hero-abacus:** add purple bead colors for dark theme ([721dfe4](https://github.com/antialias/soroban-abacus-flashcards/commit/721dfe426db4fe259f6cdeac587d008339df769b)) - **hero:** adjust spacing between title, subtitle, and abacus ([3a3706c](https://github.com/antialias/soroban-abacus-flashcards/commit/3a3706cc6fb694c7762f065f4ab4996bb8608dc4)) ## [4.46.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.46.1...v4.46.2) (2025-10-20) ### Bug Fixes - **types:** properly type HomeHeroContext in AppNavBar ([f9a7cb7](https://github.com/antialias/soroban-abacus-flashcards/commit/f9a7cb7f05dfddf291d89212a77ba1c11c00c9c7)) ## [4.46.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.46.0...v4.46.1) (2025-10-20) ### Bug Fixes - **hero-abacus:** restructure layout to prevent visual overlap ([02b6c70](https://github.com/antialias/soroban-abacus-flashcards/commit/02b6c70b7a52f7de2954e5e0efddbed64d419d6c)) ## [4.46.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.45.0...v4.46.0) (2025-10-20) ### Features - **homepage:** add full-page hero abacus with scroll-based nav transition ([d8ec642](https://github.com/antialias/soroban-abacus-flashcards/commit/d8ec64280ec0c2f44f2fd9c72a93a882481f650b)) ### Bug Fixes - **homepage:** improve hero abacus sizing and layout ([230f1dc](https://github.com/antialias/soroban-abacus-flashcards/commit/230f1dcd866e5b3625e19f7400f5eae478fe7d0c)) ### Styles - **hero-abacus:** apply dark theme to match homepage styling ([e0b6a2e](https://github.com/antialias/soroban-abacus-flashcards/commit/e0b6a2e88b3ebbaae41ed54f23f9e514604d2262)) ## [4.45.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.44.3...v4.45.0) (2025-10-20) ### Features - **branding:** rebrand navigation from 'Soroban Generator' to 'Abaci One' ([cce8980](https://github.com/antialias/soroban-abacus-flashcards/commit/cce8980e177da1b3c344e46561d928ed98b86f6c)) ## [4.44.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.44.2...v4.44.3) (2025-10-20) ### Bug Fixes - **levels:** reduce operator box sizes and remove divider line ([29d20a6](https://github.com/antialias/soroban-abacus-flashcards/commit/29d20a6c0741e7427f2bb64bc9c3e950b1a3238a)) - **levels:** use uniform padding on operator box grid ([2818fd1](https://github.com/antialias/soroban-abacus-flashcards/commit/2818fd15cacac78de6d86ba769b9b2a02800ed1e)) ## [4.44.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.44.1...v4.44.2) (2025-10-20) ### Bug Fixes - **levels:** match top/bottom margins to left padding on kyu detail boxes ([aa0bdcf](https://github.com/antialias/soroban-abacus-flashcards/commit/aa0bdcf686adcbfd1a145cf67121181d1f1194d9)) ## [4.44.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.44.0...v4.44.1) (2025-10-20) ### Bug Fixes - **levels:** add fixed dimensions and margins to kyu detail boxes ([05dd0b3](https://github.com/antialias/soroban-abacus-flashcards/commit/05dd0b30d3c397b82b7b7cc93a5ea575f3aada6d)) ## [4.44.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.43.2...v4.44.0) (2025-10-20) ### Features - **levels:** redesign kyu details with larger operators and prominent digits ([6739d59](https://github.com/antialias/soroban-abacus-flashcards/commit/6739d59f2b6189a98570e23e04c20d86d774ccce)) ## [4.43.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.43.1...v4.43.2) (2025-10-20) ### Code Refactoring - **levels:** remove Time and Pass sections from kyu details ([d90b5d5](https://github.com/antialias/soroban-abacus-flashcards/commit/d90b5d55322e75dd28b95376614663a506c829d4)) ## [4.43.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.43.0...v4.43.1) (2025-10-20) ### Bug Fixes - **levels:** use two-column grid for kyu details to prevent clipping ([fa3b73c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa3b73c69169b4694201ffa19ae3f8b5a68dfe32)) ## [4.43.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.42.1...v4.43.0) (2025-10-20) ### Features - **levels:** add structured kyu exam details with card UI ([6501b07](https://github.com/antialias/soroban-abacus-flashcards/commit/6501b073b100a00982cff1ca3140921e74f31a9c)) ## [4.42.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.42.0...v4.42.1) (2025-10-20) ### Code Refactoring - **levels:** store kyu data verbatim, add formatting layer ([53d23f1](https://github.com/antialias/soroban-abacus-flashcards/commit/53d23f19bc06459462afb76ed94d9b99d583a32d)) ## [4.42.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.41.0...v4.42.0) (2025-10-20) ### Features - **levels:** add kyu level details display with English translations ([c650ffa](https://github.com/antialias/soroban-abacus-flashcards/commit/c650ffa1935fe370d37190b2843c0deecdcce8e7)) ## [4.41.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.40.1...v4.41.0) (2025-10-20) ### Features - **levels:** right-align abacus display ([8681b17](https://github.com/antialias/soroban-abacus-flashcards/commit/8681b17340e757cf04d17f884a780a251645bb33)) ## [4.40.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.40.0...v4.40.1) (2025-10-20) ### Bug Fixes - **levels:** increase animation speed to 10ms for 10th Dan ([6f89d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/6f89d9e274082908fc090a9c0ba310f2cb06f014)) ## [4.40.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.39.1...v4.40.0) (2025-10-20) ### Features - **levels:** progressive animation speed for Dan levels ([9dff3e7](https://github.com/antialias/soroban-abacus-flashcards/commit/9dff3e7b7b1ca46ea7f19a48135124b80c5182c0)) ## [4.39.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.39.0...v4.39.1) (2025-10-20) ### Bug Fixes - **levels:** improve slider tick spacing to use full width ([1e90d6c](https://github.com/antialias/soroban-abacus-flashcards/commit/1e90d6c6207f29084a8dc96ccfbb1013a1a62271)) ## [4.39.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.38.1...v4.39.0) (2025-10-20) ### Features - **levels:** add auto-advance slider with hover pause ([41eaed2](https://github.com/antialias/soroban-abacus-flashcards/commit/41eaed24fce510bab7fd03fa2e39e829b33a7346)) ## [4.38.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.38.0...v4.38.1) (2025-10-20) ### Bug Fixes - **levels:** adjust slider text positioning to prevent emoji overlap ([e5ffe39](https://github.com/antialias/soroban-abacus-flashcards/commit/e5ffe3927edfb1baea7ddd216507e081f50e5d2c)) ## [4.38.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.37.0...v4.38.0) (2025-10-20) ### Features - **levels:** add animated calculation effect to abacus display ([4f4c735](https://github.com/antialias/soroban-abacus-flashcards/commit/4f4c73577a944518c093b3208a85482909fe3064)) ## [4.37.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.36.0...v4.37.0) (2025-10-20) ### Features - **levels:** add hover tracking to slider for real-time level preview ([477a0b3](https://github.com/antialias/soroban-abacus-flashcards/commit/477a0b367e32749b865b5a5405846e86d5bcef6a)) ## [4.36.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.35.1...v4.36.0) (2025-10-20) ### Features - **levels:** make emoji tick marks clickable and remove redundant UI ([07c783a](https://github.com/antialias/soroban-abacus-flashcards/commit/07c783a79454f50e7302b19684be6d2e5930154d)) ### Bug Fixes - **levels:** add smooth CSS transitions for slider thumb movement ([ca8cef1](https://github.com/antialias/soroban-abacus-flashcards/commit/ca8cef1c36efeb1c8c214c74f8bd383f9295be3b)) ## [4.35.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.35.0...v4.35.1) (2025-10-20) ### Features - **abacus-react:** export StandaloneBead component wired to AbacusDisplayContext ([0146ce1](https://github.com/antialias/soroban-abacus-flashcards/commit/0146ce1e67da27a24cbaa8338ba6a1a6befd6bd3)) ### Performance Improvements - **levels:** speed up slider animations for more responsive feel ([1e5467f](https://github.com/antialias/soroban-abacus-flashcards/commit/1e5467fad4e27b832300c49b4f73547dc47598b0)) ## [4.35.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.34.0...v4.35.0) (2025-10-20) ### Features - **levels:** replace slider thumb with diamond-shaped abacus beads ([0fbde53](https://github.com/antialias/soroban-abacus-flashcards/commit/0fbde53039d3ea000c6a3be492b733479e7bf47c)) ## [4.34.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.8...v4.34.0) (2025-10-20) ### Features - **levels:** redesign slider with abacus-themed beads ([f3dce84](https://github.com/antialias/soroban-abacus-flashcards/commit/f3dce84532fa706e4ec9551facde2055a060ee13)) ### Code Refactoring - **levels:** convert to Radix UI Slider with abacus theme ([a03e73c](https://github.com/antialias/soroban-abacus-flashcards/commit/a03e73c849c5da4337f26a74b8f12b617c66068e)) ## [4.33.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.7...v4.33.8) (2025-10-20) ### Bug Fixes - **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)) ## [4.33.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.6...v4.33.7) (2025-10-20) ### Bug Fixes - **levels:** reduce scale factor variation to minimize margin differences ([abb647c](https://github.com/antialias/soroban-abacus-flashcards/commit/abb647ce40b8f9d0c8268ab18c139324ae3195c5)) ## [4.33.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.5...v4.33.6) (2025-10-20) ### Bug Fixes - **levels:** increase container height to prevent abacus clipping ([cd5c15a](https://github.com/antialias/soroban-abacus-flashcards/commit/cd5c15aeb260c568fe7ad9b6a4f51c4d6498b2b8)) ## [4.33.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.4...v4.33.5) (2025-10-20) ### Bug Fixes - **levels:** revert delayed column change, keep overflow hidden ([22f00f5](https://github.com/antialias/soroban-abacus-flashcards/commit/22f00f59f5facc36a846408dcd196ec54ea676b1)) ## [4.33.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.3...v4.33.4) (2025-10-20) ### Bug Fixes - **levels:** stabilize slider position and prevent abacus clipping ([09004dc](https://github.com/antialias/soroban-abacus-flashcards/commit/09004dc2c055031ee2f71c964ceee6f7b1d42ecd)) ## [4.33.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.2...v4.33.3) (2025-10-20) ### Code Refactoring - **levels:** move slider into level display pane above abacus ([2d8bb4a](https://github.com/antialias/soroban-abacus-flashcards/commit/2d8bb4ab8804f399d1ccc8a18feff9f09eca8029)) ## [4.33.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.1...v4.33.2) (2025-10-20) ### Bug Fixes - **levels:** add fixed height to entire level display pane ([200b26c](https://github.com/antialias/soroban-abacus-flashcards/commit/200b26c2cd35d1d637ede9dcfc3dbbc7f3f19320)) ## [4.33.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.33.0...v4.33.1) (2025-10-20) ### Bug Fixes - **levels:** only animate abacus, not container with background/border ([c80477d](https://github.com/antialias/soroban-abacus-flashcards/commit/c80477d24877ddada5f3f4405abbf05e1d753b5d)) ## [4.33.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.32.1...v4.33.0) (2025-10-20) ### Features - **abacus-react:** add BigInt support for 30-digit Dan level abacuses ([0ab4cc2](https://github.com/antialias/soroban-abacus-flashcards/commit/0ab4cc288066b75a6ea4371f65098db5c0fc8847)) - **levels:** add hover interaction and smooth React Spring transitions ([fd2b633](https://github.com/antialias/soroban-abacus-flashcards/commit/fd2b6338a84c3bbc683eff216a8da3b155749f0f)) ## [4.32.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.32.0...v4.32.1) (2025-10-20) ### Bug Fixes - **levels:** use correct dark mode styling from homepage + docs update ([c38767f](https://github.com/antialias/soroban-abacus-flashcards/commit/c38767f4d399fa2caa5cd4e0185689d0207fbdaf)) ## [4.32.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.31.1...v4.32.0) (2025-10-20) ### Features - **levels:** add dark mode styling and responsive scaling to abacus ([92e1e62](https://github.com/antialias/soroban-abacus-flashcards/commit/92e1e621321039206f65b3605f5797bbdc6beafc)) ## [4.31.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.31.0...v4.31.1) (2025-10-20) ### Bug Fixes - **levels:** use correct AbacusReact API with direct props ([892b377](https://github.com/antialias/soroban-abacus-flashcards/commit/892b377eb3bbd555dd2566bf58e946e9faa7b9f6)) ## [4.31.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.30.0...v4.31.0) (2025-10-20) ### Features - **levels:** implement interactive slider for exploring kyu & dan ranks ([eb3b100](https://github.com/antialias/soroban-abacus-flashcards/commit/eb3b1000563536d4143ba1f4ec04e59e8dd2e608)) ## [4.30.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.29.0...v4.30.0) (2025-10-20) ### Features - **levels:** create true horizontal slider with abacus visualizations ([6d734f1](https://github.com/antialias/soroban-abacus-flashcards/commit/6d734f1d51f5ba1367f55923e58bd977413d754e)) ## [4.29.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.28.0...v4.29.0) (2025-10-20) ### Features - **levels:** replace kyu grid with interactive slider and abacus visualizations ([10978e8](https://github.com/antialias/soroban-abacus-flashcards/commit/10978e890beee65dea78ddcce52cfe5315d58063)) ## [4.28.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.27.0...v4.28.0) (2025-10-20) ### Features - **levels:** add informational footer section ([0b1bff7](https://github.com/antialias/soroban-abacus-flashcards/commit/0b1bff7eab8f5da84ae309dbda336e168c2fe3fd)) ## [4.27.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.26.0...v4.27.0) (2025-10-20) ### Features - **levels:** add Dan levels ladder visualization ([c18012c](https://github.com/antialias/soroban-abacus-flashcards/commit/c18012cb505a1f2a86ebed7579b379a4d7d97f2c)) ## [4.26.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.25.1...v4.26.0) (2025-10-20) ### Features - **levels:** add kyu level data and cards ([6463a3b](https://github.com/antialias/soroban-abacus-flashcards/commit/6463a3b2f6371ebebac1048197fb44178997d2ef)) ## [4.25.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.25.0...v4.25.1) (2025-10-20) ### Code Refactoring - **homepage:** make entire "Your Journey" card clickable ([3f30810](https://github.com/antialias/soroban-abacus-flashcards/commit/3f30810271418f3acf3df17e41d9a897a3312c34)) ## [4.25.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.24.3...v4.25.0) (2025-10-20) ### Features - **levels:** add Kyu & Dan levels page with homepage link ([39b1e7d](https://github.com/antialias/soroban-abacus-flashcards/commit/39b1e7de16f15412c91cf648c714e31e2de7a6bc)) ### Styles - **homepage:** adjust journey emoji sizing and spacing ([2a0e469](https://github.com/antialias/soroban-abacus-flashcards/commit/2a0e469e83b99c88f091bfecd770e0b4c1cb6310)) ## [4.24.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.24.2...v4.24.3) (2025-10-20) ### Code Refactoring - **homepage:** align all skill icon panes horizontally ([4b04e86](https://github.com/antialias/soroban-abacus-flashcards/commit/4b04e8673da228863d4ec1869897ee431fa3d753)) ## [4.24.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.24.1...v4.24.2) (2025-10-20) ### Code Refactoring - **homepage:** tighten mini abacus vertical padding ([514d07e](https://github.com/antialias/soroban-abacus-flashcards/commit/514d07ecb5f65a3c0982b8e90994e1c17ebaa59c)) ## [4.24.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.24.0...v4.24.1) (2025-10-20) ### Bug Fixes - **homepage:** adjust mini abacus container height ([c4066d6](https://github.com/antialias/soroban-abacus-flashcards/commit/c4066d687925bbe7737ebfeefdada7365ff97c6c)) - **homepage:** fix MiniAbacus runtime error and improve sizing ([1fa0df8](https://github.com/antialias/soroban-abacus-flashcards/commit/1fa0df85f7d3988cbc61701d89476419ccf0a13c)) - **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)) ### Styles - **homepage:** add more padding around mini abacus ([c5103d0](https://github.com/antialias/soroban-abacus-flashcards/commit/c5103d049f73a8f7ef26915edfbef9ea56d59094)) - **homepage:** balance mini abacus padding horizontally and vertically ([2f0304e](https://github.com/antialias/soroban-abacus-flashcards/commit/2f0304eb81cdf84c21b0554c9cd4bd5478896dd8)) - **homepage:** increase mini abacus padding to '5' ([1da9ed1](https://github.com/antialias/soroban-abacus-flashcards/commit/1da9ed1ce6995c605622fc2863f248e5e91ab9c3)) ## [4.24.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.23.0...v4.24.0) (2025-10-20) ### Features - **homepage:** add animated mini abacus to "Read and set numbers" card ([e028e34](https://github.com/antialias/soroban-abacus-flashcards/commit/e028e342ad4bc01491e05a4ba074628155926fd8)) ## [4.23.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.22.0...v4.23.0) (2025-10-20) ### Features - **homepage:** add more visual embellishments to learning cards ([4ec1b95](https://github.com/antialias/soroban-abacus-flashcards/commit/4ec1b952f202d50f6db287c41732ec65ca17c142)) ## [4.22.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.21.1...v4.22.0) (2025-10-20) ### Features - **homepage:** enhance "What You'll Learn" with visual cards ([d142342](https://github.com/antialias/soroban-abacus-flashcards/commit/d1423420e653b26b2f89d9d17ae5d597807d6979)) ### Bug Fixes - **tutorial:** reduce tooltip z-index to scroll under nav bar ([47640f3](https://github.com/antialias/soroban-abacus-flashcards/commit/47640f3486c6d4a7107d59bdcce043f76fabbb1d)) ## [4.21.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.21.0...v4.21.1) (2025-10-20) ### Code Refactoring - **homepage:** rearrange tutorial demo layout side by side ([8b4ecee](https://github.com/antialias/soroban-abacus-flashcards/commit/8b4eceebfaaaf07e38ea64c7fe015aec86ac754f)) ## [4.21.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.7...v4.21.0) (2025-10-20) ### Features - **tutorial:** add silentErrors prop to suppress error messages ([8835e1c](https://github.com/antialias/soroban-abacus-flashcards/commit/8835e1c57ab8adcecefe0db082360dd98fbfaac7)) ## [4.20.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.6...v4.20.7) (2025-10-20) ### Bug Fixes - **home:** use Panda CSS token() for dynamic colors and center arrows properly ([d52ba63](https://github.com/antialias/soroban-abacus-flashcards/commit/d52ba6373a4577655dc1e5f5ff4926af7f7d96c3)) ## [4.20.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.5...v4.20.6) (2025-10-20) ### Bug Fixes - **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) ## [4.20.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.4...v4.20.5) (2025-10-20) ### Bug Fixes - **docker:** include Panda CSS styled-system in production image ([57fabff](https://github.com/antialias/soroban-abacus-flashcards/commit/57fabffe605d953b4a4d7e05032401cbf1ab2d14)) ## [4.20.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.3...v4.20.4) (2025-10-19) ### Bug Fixes - **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) ## [4.20.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.2...v4.20.3) (2025-10-19) ### Bug Fixes - **homepage:** use explicit RGBA colors for Your Journey text ([9c51cc9](https://github.com/antialias/soroban-abacus-flashcards/commit/9c51cc94eec4efcab9c0b9d1190f5b79c0c7d365)) ## [4.20.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.1...v4.20.2) (2025-10-19) ### Bug Fixes - **homepage:** improve text contrast in Your Journey section ([24d1200](https://github.com/antialias/soroban-abacus-flashcards/commit/24d120004dccecc1ce2f08c1b73eec902868fb23)) - **tutorial:** resolve TypeScript errors in TutorialPlayer ([88f57ce](https://github.com/antialias/soroban-abacus-flashcards/commit/88f57ce6df125142d6ea7feec60c475926bd4929)) ## [4.20.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.20.0...v4.20.1) (2025-10-19) ### Bug Fixes - **homepage:** correct positioning of progression arrows in Your Journey section ([3fff9ef](https://github.com/antialias/soroban-abacus-flashcards/commit/3fff9ef140bf1f462042f8319ed6c5e2a376e4ba)) ### Code Refactoring - **homepage:** move What You'll Learn above tutorial ([ca1c6d8](https://github.com/antialias/soroban-abacus-flashcards/commit/ca1c6d86029c891e019a96ba161e49b08b5be1bf)) ## [4.20.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.19.0...v4.20.0) (2025-10-19) ### Features - **tutorial:** add hideTooltip prop and improve dark mode coaching bar ([1ee25b3](https://github.com/antialias/soroban-abacus-flashcards/commit/1ee25b3dd2f0ee9dd7ed571ba818b7ca5a247f85)) ## [4.19.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.18.1...v4.19.0) (2025-10-19) ### Features - **tutorial:** add fill color support for dark mode column posts and reckoning bar ([2eb3ff3](https://github.com/antialias/soroban-abacus-flashcards/commit/2eb3ff340613301df20bf14f5b461371a27d7f05)) ## [4.18.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.18.0...v4.18.1) (2025-10-19) ### Bug Fixes - **tutorial:** use correct customStyles API for dark mode frame styling ([fdc882c](https://github.com/antialias/soroban-abacus-flashcards/commit/fdc882cb046e3d8835fbca59841e9af5329bcc52)) ## [4.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.17.2...v4.18.0) (2025-10-19) ### Features - **tutorial:** add dark mode styling for coaching bar and abacus frame ([7e2f580](https://github.com/antialias/soroban-abacus-flashcards/commit/7e2f580877af9d21409f427778fa3569c950fcf5)) ## [4.17.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.17.1...v4.17.2) (2025-10-19) ### Bug Fixes - **tutorial:** correct column index calculation for variable column counts ([bf1ced4](https://github.com/antialias/soroban-abacus-flashcards/commit/bf1ced43f801938b05f01548eea5fe771de1b58f)) ## [4.17.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.17.0...v4.17.1) (2025-10-19) ### Bug Fixes - **tutorial:** filter bead highlights when using fewer columns ([4d906ec](https://github.com/antialias/soroban-abacus-flashcards/commit/4d906ec20e90a9b0b3838f9b8428e0c68992f381)) ## [4.17.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.16.0...v4.17.0) (2025-10-19) ### Features - **tutorial:** add dark theme and column control props ([d42f9b2](https://github.com/antialias/soroban-abacus-flashcards/commit/d42f9b2d9ad630826c55b753dc581c469e8f9083)) ### Styles - **homepage:** soften tutorial styling for dark theme cohesion ([faaefba](https://github.com/antialias/soroban-abacus-flashcards/commit/faaefbacff419b337aa0fac4a101d5106a18c77c)), closes [#f9](https://github.com/antialias/soroban-abacus-flashcards/issues/f9) ## [4.16.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.15.1...v4.16.0) (2025-10-19) ### Features - **tutorial:** add hideNavigation prop to TutorialPlayer ([79ea52a](https://github.com/antialias/soroban-abacus-flashcards/commit/79ea52af80c8cbb482bbdd87f77caf32ada737ee)) ### Styles - **homepage:** update tutorial container to match dark theme ([6b017b0](https://github.com/antialias/soroban-abacus-flashcards/commit/6b017b0fe92d4277843d9fe2645c22366f219d76)) ## [4.15.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.15.0...v4.15.1) (2025-10-19) ### Bug Fixes - **tutorial:** resolve React hydration error in TutorialPlayer ([c883d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/c883d9e4c1b3a2f52c9d41e3ddce7418399f2649)) ### Code Refactoring - replace demo component with real TutorialPlayer system ([19b03bc](https://github.com/antialias/soroban-abacus-flashcards/commit/19b03bc77c649cf51d7b9a3617417c6ec8229ac7)) ## [4.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.6...v4.15.0) (2025-10-19) ### Features - redesign homepage with educational vision and interactive demo ([2f09cb5](https://github.com/antialias/soroban-abacus-flashcards/commit/2f09cb5539f2bb0b8c77359c6f774c3742313e1e)) ## [4.14.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.5...v4.14.6) (2025-10-19) ### Bug Fixes - replace native alerts with inline confirmations in ModerationPanel ([ebe123e](https://github.com/antialias/soroban-abacus-flashcards/commit/ebe123ed7edf24fbc7b8765ed709455a8513d6d5)) ### Documentation - add UI style guide documenting no native alerts rule ([9afd3a7](https://github.com/antialias/soroban-abacus-flashcards/commit/9afd3a7e925fddb76fa587747881b61f7cb077a5)) ## [4.14.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.4...v4.14.5) (2025-10-19) ### Bug Fixes - **rooms:** add real-time ownership transfer updates via WebSocket ([c00cfa3](https://github.com/antialias/soroban-abacus-flashcards/commit/c00cfa3de011720f3399fa340182b347f7e0d456)) ## [4.14.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.3...v4.14.4) (2025-10-19) ### Bug Fixes - **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)) ## [4.14.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.2...v4.14.3) (2025-10-19) ### Bug Fixes - **docker:** add qpdf for PDF linearization and validation ([c92ff39](https://github.com/antialias/soroban-abacus-flashcards/commit/c92ff3971c853e4e55ccd632ff3ee292fcce8315)) ## [4.14.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.1...v4.14.2) (2025-10-19) ### Bug Fixes - **docker:** add packages/templates for Typst flashcard generation ([1417722](https://github.com/antialias/soroban-abacus-flashcards/commit/14177224380b8c37413123bee344c9b762055a15)) ## [4.14.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.14.0...v4.14.1) (2025-10-19) ### Bug Fixes - **deployment:** pass git info to Docker build for deployment info modal ([4b04e43](https://github.com/antialias/soroban-abacus-flashcards/commit/4b04e43ff8c9e9f239d7f5e306aab338b535296f)) ## [4.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.15...v4.14.0) (2025-10-19) ### Features - **card-sorting:** add spectator mode UX enhancements ([4ab093a](https://github.com/antialias/soroban-abacus-flashcards/commit/4ab093a9d8ba5b290da44aaa6aa71ad7d7149b32)) ### Documentation - **arcade:** add comprehensive spectator mode documentation ([1eb6cec](https://github.com/antialias/soroban-abacus-flashcards/commit/1eb6ceca19805be53dfe3194e07e68002b2d09a7)) - **arcade:** spec spectator mode UX enhancements for card sorting ([aafba77](https://github.com/antialias/soroban-abacus-flashcards/commit/aafba77d62b47403f21f5dd72859d6a6fbb1efac)) ## [4.13.15](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.14...v4.13.15) (2025-10-19) ### Bug Fixes - **docker:** bypass PEP 668 externally-managed-environment error ([bb59c61](https://github.com/antialias/soroban-abacus-flashcards/commit/bb59c61638e60b0678043e954e044d9390f88e7f)) ## [4.13.14](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.13...v4.13.14) (2025-10-19) ### Bug Fixes - **docker:** install py3-pip for Python dependency installation ([0f55909](https://github.com/antialias/soroban-abacus-flashcards/commit/0f55909533414bdc07f113b93bb8bfa21367959b)) ### Documentation - add Panda CSS styling framework documentation ([c92d7d9](https://github.com/antialias/soroban-abacus-flashcards/commit/c92d7d9d89a72e012c30fc5ac88fa96e7a526f83)) - **arcade:** fix incorrect Tailwind references - use Panda CSS ([34a377d](https://github.com/antialias/soroban-abacus-flashcards/commit/34a377d91b37ad47968b85aedd112f9fcf72ad63)) ## [4.13.13](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.12...v4.13.13) (2025-10-19) ### Bug Fixes - **docker:** install Python dependencies for flashcard generation ([c9b7e92](https://github.com/antialias/soroban-abacus-flashcards/commit/c9b7e92f39ee7aa7f13606c2836763144df102e7)) ### Code Refactoring - **arcade:** standardize game card themes with preset system ([0209975](https://github.com/antialias/soroban-abacus-flashcards/commit/0209975af642944cc5a434c0b44205a87e634e7e)), closes [#99f6e4](https://github.com/antialias/soroban-abacus-flashcards/issues/99f6e4) [#5eead4](https://github.com/antialias/soroban-abacus-flashcards/issues/5eead4) ## [4.13.12](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.11...v4.13.12) (2025-10-18) ### Bug Fixes - **card-sorting:** use blue gradient matching other game cards ([bdb84f5](https://github.com/antialias/soroban-abacus-flashcards/commit/bdb84f5d909542060fa886a83a5af62c4a785a98)) ## [4.13.11](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.10...v4.13.11) (2025-10-18) ### Bug Fixes - **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) - **docker:** copy core package with Python scripts to production image ([33e9ad2](https://github.com/antialias/soroban-abacus-flashcards/commit/33e9ad2f79b591f1c5ee57a6691e1bcf48420859)) ## [4.13.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.9...v4.13.10) (2025-10-18) ### Bug Fixes - add Typst to Docker image for flashcard generation ([d9a7694](https://github.com/antialias/soroban-abacus-flashcards/commit/d9a769403187bf70fb069be7ffe77417a62271a5)) ### Code Refactoring - remove 'Complete Soroban Learning Platform' section ([42dcbff](https://github.com/antialias/soroban-abacus-flashcards/commit/42dcbff85708ad378550634cbf7a3345eccb578e)) ## [4.13.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.8...v4.13.9) (2025-10-18) ### Bug Fixes - 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) ## [4.13.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.7...v4.13.8) (2025-10-18) ### Bug Fixes - use color instead of fill for numeral styling ([ea10c16](https://github.com/antialias/soroban-abacus-flashcards/commit/ea10c16811eb969b9963417079c330ae9ff295ba)) ## [4.13.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.6...v4.13.7) (2025-10-18) ### 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) - use app-wide abacus config and remove instruction text ([0a50c73](https://github.com/antialias/soroban-abacus-flashcards/commit/0a50c733b089c7c341f0fdef47da78d1c61a3cb5)) ## [4.13.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.5...v4.13.6) (2025-10-18) ### Bug Fixes - simplify abacus pane with light background ([30f48ab](https://github.com/antialias/soroban-abacus-flashcards/commit/30f48ab8976976688e089b07ece7fdae6d7ada79)) ## [4.13.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.4...v4.13.5) (2025-10-18) ### Bug Fixes - 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) ## [4.13.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.3...v4.13.4) (2025-10-18) ### Bug Fixes - **card-sorting:** increase card tile sizes to contain abacuses ([d2a3b7a](https://github.com/antialias/soroban-abacus-flashcards/commit/d2a3b7ae2e3f6819b8d9ace32be22f04f748d1bc)) ## [4.13.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.2...v4.13.3) (2025-10-18) ### Bug Fixes - **card-sorting:** increase SVG size to fill card containers ([cf9d893](https://github.com/antialias/soroban-abacus-flashcards/commit/cf9d893f3fdbef6e91cd0ba283d602b9215569f1)) ## [4.13.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.1...v4.13.2) (2025-10-18) ### Bug Fixes - 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) ## [4.13.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.13.0...v4.13.1) (2025-10-18) ### Bug Fixes - use defaultValue for interactive abacus control ([06aca98](https://github.com/antialias/soroban-abacus-flashcards/commit/06aca986ace4d76b70f2fd2f5e57f66758185b38)) ## [4.13.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.12.0...v4.13.0) (2025-10-18) ### Features - make home page abacus interactive with audio ([9a53d7e](https://github.com/antialias/soroban-abacus-flashcards/commit/9a53d7e5db18853aca4e2e0c7abc799217feaecf)) ## [4.12.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.11.1...v4.12.0) (2025-10-18) ### Features - redesign home page with component showcase ([29af265](https://github.com/antialias/soroban-abacus-flashcards/commit/29af265958f9fdab0253b92e153c01575840454d)) ## [4.11.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.11.0...v4.11.1) (2025-10-18) ### Bug Fixes - **card-sorting:** center AbacusReact SVGs in card tiles ([26edec1](https://github.com/antialias/soroban-abacus-flashcards/commit/26edec1bbf038264405ec9d161edcd18f67a6fc6)) ## [4.11.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.6...v4.11.0) (2025-10-18) ### Features - **home:** redesign home page to showcase complete platform ([ee6c4f2](https://github.com/antialias/soroban-abacus-flashcards/commit/ee6c4f2f4f39e3b30f59c54866c3857c218fb80f)) ## [4.10.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.5...v4.10.6) (2025-10-18) ### Bug Fixes - **card-sorting:** position slots flow horizontally with wrap ([e14ffe4](https://github.com/antialias/soroban-abacus-flashcards/commit/e14ffe44d66d0c97bc0cc4e0c255698e88ce723a)) ## [4.10.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.4...v4.10.5) (2025-10-18) ### Code Refactoring - **arcade:** merge /arcade/room into /arcade route ([0790074](https://github.com/antialias/soroban-abacus-flashcards/commit/0790074ffc5008bce9a162fe0ddbd1d5c214c4f7)) ## [4.10.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.3...v4.10.4) (2025-10-18) ### Bug Fixes - **card-sorting:** match Python card layout with flex wrap ([9679d68](https://github.com/antialias/soroban-abacus-flashcards/commit/9679d68154ac8b6a2f905ec7d17a34b39bc00237)) ## [4.10.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.2...v4.10.3) (2025-10-18) ### Bug Fixes - **arcade:** remove broken query param from game URLs ([87631af](https://github.com/antialias/soroban-abacus-flashcards/commit/87631af6788bd7b42e671374e55ec0ad8435900c)) ## [4.10.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.1...v4.10.2) (2025-10-18) ### Bug Fixes - **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) ## [4.10.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.10.0...v4.10.1) (2025-10-18) ### Bug Fixes - **arcade:** remove legacy master-organizer placeholder ([76d207e](https://github.com/antialias/soroban-abacus-flashcards/commit/76d207e2e5244f84bc0d76fe3d753034f1991228)) ### Code Refactoring - remove old single-player complement-race version ([0eae43a](https://github.com/antialias/soroban-abacus-flashcards/commit/0eae43a8ce16c1c080c04c352ba750f55165b694)) ## [4.10.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.9.0...v4.10.0) (2025-10-18) ### Features - **card-sorting:** add UI components and fix AbacusReact props ([d249ec0](https://github.com/antialias/soroban-abacus-flashcards/commit/d249ec0e5ff4610f55f35f762d726e0c98ac366c)) ### Code Refactoring - remove old single-player memory-quiz version ([0dab5da](https://github.com/antialias/soroban-abacus-flashcards/commit/0dab5da0c7f9186695b1970c85e5c09ea0e33c5f)) ## [4.9.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.8.0...v4.9.0) (2025-10-18) ### Features - **card-sorting:** implement Provider with arcade session integration ([7f6fea9](https://github.com/antialias/soroban-abacus-flashcards/commit/7f6fea91f6dcc69a173eea86bcefc9921f1c1664)) ## [4.8.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.7.1...v4.8.0) (2025-10-18) ### Features - **arcade:** add Card Sorting Challenge game scaffolding ([df37260](https://github.com/antialias/soroban-abacus-flashcards/commit/df37260e26bbb146493e0834e093afd98fa3f2a4)) ## [4.7.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.7.0...v4.7.1) (2025-10-18) ### Code Refactoring - **arcade:** remove number-guesser and math-sprint games ([9fb9786](https://github.com/antialias/soroban-abacus-flashcards/commit/9fb9786e54928e81ecf226b36d343a73143fb674)) ## [4.7.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.10...v4.7.0) (2025-10-18) ### Features - **complement-race:** enable adaptive AI difficulty in arcade ([55010d2](https://github.com/antialias/soroban-abacus-flashcards/commit/55010d2bcd953718d8fea428b1f7f613a193779c)) ## [4.6.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.9...v4.6.10) (2025-10-18) ### Bug Fixes - **complement-race:** improve AI speech bubble positioning ([6e436db](https://github.com/antialias/soroban-abacus-flashcards/commit/6e436db5e709d944ebffed6936ea1f8e4bd2e19e)) - **docker:** remove reference to deleted @soroban/client package ([2953ef8](https://github.com/antialias/soroban-abacus-flashcards/commit/2953ef8917f7b13f6eb562eb7d58d14179a718da)) ## [4.6.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.8...v4.6.9) (2025-10-18) ### Bug Fixes - **complement-race:** add missing AI commentary cooldown updates ([357aa30](https://github.com/antialias/soroban-abacus-flashcards/commit/357aa30618f80d659ae515f94b7b9254bb458910)) ### Code Refactoring - remove dead Python bridge and unused packages ([22426f6](https://github.com/antialias/soroban-abacus-flashcards/commit/22426f677f9b127441377b95571f0066a0990d3f)) ## [4.6.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.7...v4.6.8) (2025-10-18) ### Bug Fixes - **complement-race:** counter-flip AI speech bubbles to make text readable ([07d5607](https://github.com/antialias/soroban-abacus-flashcards/commit/07d5607218aee03e813eceff5d161a7838d66bcb)) ## [4.6.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.6...v4.6.7) (2025-10-18) ### Bug Fixes - **complement-race:** use active local players pattern from navbar ([71cdc34](https://github.com/antialias/soroban-abacus-flashcards/commit/71cdc342c97ca53b5e7e4202d4d344199e8ddd98)) ## [4.6.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.5...v4.6.6) (2025-10-18) ### Bug Fixes - **complement-race:** use local player emoji instead of first active player ([76eb051](https://github.com/antialias/soroban-abacus-flashcards/commit/76eb0517c202d1b9160b49dec0b99ff4972daff2)) ## [4.6.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.4...v4.6.5) (2025-10-18) ### Bug Fixes - **complement-race:** flip player avatar to face right in practice mode ([fa6b3b6](https://github.com/antialias/soroban-abacus-flashcards/commit/fa6b3b69d5a4a7eb70f8c18fc8c122c54c4d504a)) ## [4.6.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.3...v4.6.4) (2025-10-18) ### Bug Fixes - **complement-race:** flip AI racers to face right in practice mode ([ebfff1a](https://github.com/antialias/soroban-abacus-flashcards/commit/ebfff1a62fd104d531a8158345c8c012ec8a55d3)) ## [4.6.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.2...v4.6.3) (2025-10-18) ### Bug Fixes - **complement-race:** balance AI speeds to match original implementation ([054f0c0](https://github.com/antialias/soroban-abacus-flashcards/commit/054f0c0d235dc2b0042a0f6af48840d23a4c5ff8)) ## [4.6.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.1...v4.6.2) (2025-10-18) ### Bug Fixes - **build:** resolve Docker build failures preventing deployment ([7801dbb](https://github.com/antialias/soroban-abacus-flashcards/commit/7801dbb25fb0a33429c70f11294264f7238ce7a4)) ## [4.6.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.6.0...v4.6.1) (2025-10-18) ### Code Refactoring - **complement-race:** move AI opponents from server-side to client-side ([09e21fa](https://github.com/antialias/soroban-abacus-flashcards/commit/09e21fa4934c634d0ce46381ef7e40238fc134c3)) ## [4.6.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.5.0...v4.6.0) (2025-10-18) ### Features - **complement-race:** restore AI opponents in practice and survival modes ([325e07d](https://github.com/antialias/soroban-abacus-flashcards/commit/325e07de5929169aa333ef16f7bca5b41eeb1622)) ## [4.5.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.15...v4.5.0) (2025-10-18) ### Features - **complement-race:** add infinite win condition for Steam Sprint mode ([d8fdfee](https://github.com/antialias/soroban-abacus-flashcards/commit/d8fdfeef74a5d3bb9684254af1c9d64d264b46ad)) ## [4.4.15](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.14...v4.4.15) (2025-10-18) ### Bug Fixes - **complement-race:** track previous position to detect route threshold crossing ([a6c20aa](https://github.com/antialias/soroban-abacus-flashcards/commit/a6c20aab3b245d9893808d188d16a35ab80cfca9)) ## [4.4.14](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.13...v4.4.14) (2025-10-18) ### Bug Fixes - **complement-race:** remove dual game loop conflict preventing route progression ([84d42e2](https://github.com/antialias/soroban-abacus-flashcards/commit/84d42e22ac0cdd25e87e45dc698029ad7ed78559)) ## [4.4.13](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.12...v4.4.13) (2025-10-17) ### Bug Fixes - **complement-race:** show new passengers when route changes ([ec1c8ed](https://github.com/antialias/soroban-abacus-flashcards/commit/ec1c8ed263844f56477c1f709041339b42b48f4e)) ## [4.4.12](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.11...v4.4.12) (2025-10-17) ### Bug Fixes - **complement-race:** track physical car indices to prevent boarding issues ([53bbae8](https://github.com/antialias/soroban-abacus-flashcards/commit/53bbae84af7317d5e12109db2054cc70ca5bea27)) - **complement-race:** update passenger display when state changes ([5116364](https://github.com/antialias/soroban-abacus-flashcards/commit/511636400c19776b58c6bddf8f7c9cc398a05236)) ## [4.4.11](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.10...v4.4.11) (2025-10-17) ### Code Refactoring - **logging:** replace per-frame debug logging with event-based logging ([fedb324](https://github.com/antialias/soroban-abacus-flashcards/commit/fedb32486ab5c6c619ebc03570b6c66529a1344e)) ## [4.4.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.9...v4.4.10) (2025-10-17) ### Bug Fixes - **complement-race:** correct passenger boarding to use multiplayer fields ([7ed1b94](https://github.com/antialias/soroban-abacus-flashcards/commit/7ed1b94b8fa620cb4f64ba43e160ef511704f3ce)) ## [4.4.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.8...v4.4.9) (2025-10-17) ### Bug Fixes - **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)) ## [4.4.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.7...v4.4.8) (2025-10-17) ### Bug Fixes - **complement-race:** implement client-side momentum with continuous decay for smooth train movement ([ea19ff9](https://github.com/antialias/soroban-abacus-flashcards/commit/ea19ff918bc70ad3eb0339e18dbd32195f34816e)) ## [4.4.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.6...v4.4.7) (2025-10-17) ### Bug Fixes - **complement-race:** add missing useRef import ([d43829a](https://github.com/antialias/soroban-abacus-flashcards/commit/d43829ad48f7ee879a46879f5e6ac1256db1f564)) ## [4.4.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.5...v4.4.6) (2025-10-17) ### Bug Fixes - **complement-race:** restore smooth train movement with client-side game loop ([46a80cb](https://github.com/antialias/soroban-abacus-flashcards/commit/46a80cbcc8ec39224d4edaf540da25611d48fbdd)) ## [4.4.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.4...v4.4.5) (2025-10-17) ### Bug Fixes - **complement-race:** add missing useEffect import ([3054130](https://github.com/antialias/soroban-abacus-flashcards/commit/30541304dd0f0801860dd62967f7f7cae717bcdd)) ## [4.4.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.3...v4.4.4) (2025-10-17) ### Bug Fixes - **complement-race:** add pressure decay system and improve logging ([66992e8](https://github.com/antialias/soroban-abacus-flashcards/commit/66992e877065a42d00379ef8fae0a6e252b0ffcb)) ## [4.4.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.2...v4.4.3) (2025-10-17) ### Bug Fixes - **complement-race:** train now moves in sprint mode ([54b46e7](https://github.com/antialias/soroban-abacus-flashcards/commit/54b46e771e654721e7fabb1f45ecd45daf8e447f)) ### Code Refactoring - simplify train debug logs to strings only ([334a49c](https://github.com/antialias/soroban-abacus-flashcards/commit/334a49c92e112c852c483b5dbe3a3d0aef8a5c03)) ## [4.4.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.1...v4.4.2) (2025-10-17) ### Code Refactoring - **complement-race:** remove verbose logging, keep only train debug logs ([86af2fe](https://github.com/antialias/soroban-abacus-flashcards/commit/86af2fe902b3d3790b7b4659fdc698caed8e4dd9)) ## [4.4.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.4.0...v4.4.1) (2025-10-17) ### Bug Fixes - **complement-race:** clear input state on question transitions ([5872030](https://github.com/antialias/soroban-abacus-flashcards/commit/587203056a1e1692348805eb0de909d81d16e158)) ### Documentation - **complement-race:** add Phase 9 for multiplayer visual features ([131c54b](https://github.com/antialias/soroban-abacus-flashcards/commit/131c54b5627ceeac7ca3653f683c32822a2007af)) ## [4.4.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.3.1...v4.4.0) (2025-10-16) ### Features - **complement-race:** add mini app navigation bar ([ed0ef2d](https://github.com/antialias/soroban-abacus-flashcards/commit/ed0ef2d3b87324470d06b3246652967544caec26)) ## [4.3.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.3.0...v4.3.1) (2025-10-16) ### Bug Fixes - **complement-race:** resolve TypeScript errors in state adapter ([59abcca](https://github.com/antialias/soroban-abacus-flashcards/commit/59abcca4c4192ca28944fa1fa366791d557c1c27)) ## [4.3.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.2.2...v4.3.0) (2025-10-16) ### Features - **complement-race:** implement state adapter for multiplayer support ([13882bd](https://github.com/antialias/soroban-abacus-flashcards/commit/13882bda3258d68a817473d7d830381f02553043)) ## [4.2.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.2.1...v4.2.2) (2025-10-16) ### Code Refactoring - **types:** consolidate type system - eliminate fragmentation ([0726176](https://github.com/antialias/soroban-abacus-flashcards/commit/0726176e4d2666f6f3a289f01736747c33e93879)) ## [4.2.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.2.0...v4.2.1) (2025-10-16) ### Bug Fixes - **socket-io:** update import path for socket-server module ([1a64dec](https://github.com/antialias/soroban-abacus-flashcards/commit/1a64decf5afe67c16e1aec283262ffa6132dcd83)) ### Code Refactoring - **matching:** complete validator migration to modular location ([f2958cd](https://github.com/antialias/soroban-abacus-flashcards/commit/f2958cd8c424989b8651ea666ce9843e97e75929)) ## [4.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.1.0...v4.2.0) (2025-10-16) ### Features - **arcade:** migrate matching pairs - phases 1-4 and 7 complete ([2a3af97](https://github.com/antialias/soroban-abacus-flashcards/commit/2a3af973f70ff07de30b38bbe1cdc549a971846f)) ### Bug Fixes - resolve TypeScript errors in MemoryGrid and StandardGameLayout ([cabbc82](https://github.com/antialias/soroban-abacus-flashcards/commit/cabbc821955d70f118630dc21a9fcbb6d340f278)) ### Code Refactoring - **matching:** migrate to modular game system ([e5c4a4b](https://github.com/antialias/soroban-abacus-flashcards/commit/e5c4a4bae078c69e632945730c61299f7062f4be)) - **matching:** remove legacy battle-arena references ([c46a098](https://github.com/antialias/soroban-abacus-flashcards/commit/c46a0983813c87d5e82a5aa32c48a10a49259b00)) ## [4.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.0.3...v4.1.0) (2025-10-16) ### Features - **arcade:** migrate memory-quiz to modular game system ([f48c37a](https://github.com/antialias/soroban-abacus-flashcards/commit/f48c37accccb88e790c7a1b438fd0566e7120e11)) ### Code Refactoring - **arcade:** remove memory-quiz from legacy GAMES_CONFIG ([9952e11](https://github.com/antialias/soroban-abacus-flashcards/commit/9952e11c27f6cacb8eef1c5494b8cfea29dac907)) ### Documentation - add matching pairs battle migration plan ([3948582](https://github.com/antialias/soroban-abacus-flashcards/commit/39485826fc6c87f54c07795211909da0278a2ad0)) - add memory-quiz migration plan documentation ([7e2df10](https://github.com/antialias/soroban-abacus-flashcards/commit/7e2df106e68a1a0be414852a3e603b89029635b7)) - **arcade:** document Phase 3 completion in ARCHITECTURAL_IMPROVEMENTS.md ([704f34f](https://github.com/antialias/soroban-abacus-flashcards/commit/704f34f83e76332cb3610bda75289cbd0036e7eb)) - update playbook with memory-quiz completion ([99eee69](https://github.com/antialias/soroban-abacus-flashcards/commit/99eee69f28d17d0f9a3c806a1b84d90ee1fad683)) ## [4.0.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.0.2...v4.0.3) (2025-10-16) ### Bug Fixes - **math-sprint:** remove unused import and autoFocus attribute ([51593eb](https://github.com/antialias/soroban-abacus-flashcards/commit/51593eb44f93e369d6a773ee80e5f5cf50f3be67)) ### Code Refactoring - **arcade:** implement Phase 3 - infer config types from game definitions ([eed468c](https://github.com/antialias/soroban-abacus-flashcards/commit/eed468c6c4057e3c09a1e8df88551a9336c490c5)) ### Documentation - **arcade:** update README with Phase 3 type inference architecture ([b47b1cc](https://github.com/antialias/soroban-abacus-flashcards/commit/b47b1cc03f4b5fcfe8340653ca8a5dd903833481)) ### Styles - **math-sprint:** apply Biome formatting ([d7d8d8b](https://github.com/antialias/soroban-abacus-flashcards/commit/d7d8d8b1e32f9c9bb73d076f5d611210f809eca8)) ## [4.0.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.0.1...v4.0.2) (2025-10-16) ### Bug Fixes - **arcade:** prevent server-side loading of React components ([784793b](https://github.com/antialias/soroban-abacus-flashcards/commit/784793ba244731edf45391da44588a978b137abe)) ## [4.0.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.0.0...v4.0.1) (2025-10-16) ### Code Refactoring - **arcade:** move config validation to game definitions ([b19437b](https://github.com/antialias/soroban-abacus-flashcards/commit/b19437b7dc418f194fb60e12f1c17034024eca2a)), closes [#3](https://github.com/antialias/soroban-abacus-flashcards/issues/3) ## [4.0.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.24.0...v4.0.0) (2025-10-16) ### ⚠ BREAKING CHANGES - **db:** Database schemas now accept any string for game names ### 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) ## [3.24.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.23.0...v3.24.0) (2025-10-16) ### Features - **math-sprint:** add game manifest ([1eefcc8](https://github.com/antialias/soroban-abacus-flashcards/commit/1eefcc89a58b79f928932a7425d6b88fb45a5526)) ## [3.23.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.22.3...v3.23.0) (2025-10-16) ### Features - **arcade:** add Math Sprint game implementation ([e5be09e](https://github.com/antialias/soroban-abacus-flashcards/commit/e5be09ef5f170c7544557f75b9eca17bb2069246)) - **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) ### Bug Fixes - **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) - **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) ### Documentation - add architecture quality audit [#2](https://github.com/antialias/soroban-abacus-flashcards/issues/2) ([5b91b71](https://github.com/antialias/soroban-abacus-flashcards/commit/5b91b710782dc450405583bc196e5156a296d0df)) ## [3.22.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.22.2...v3.22.3) (2025-10-16) ### Bug Fixes - **number-guesser:** add turn indicators, error feedback, and fix player ordering ([9f62623](https://github.com/antialias/soroban-abacus-flashcards/commit/9f626236845493ef68e1b3626e80efa35637b449)) ### Documentation - **arcade:** update docs for unified validator registry ([6f6cb14](https://github.com/antialias/soroban-abacus-flashcards/commit/6f6cb14650ba3636a7e2b036e2a2a9410492e7c3)) ## [3.22.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.22.1...v3.22.2) (2025-10-16) ### Code Refactoring - **arcade:** create unified validator registry to fix dual registration ([f775fc5](https://github.com/antialias/soroban-abacus-flashcards/commit/f775fc55e50af0c3a29b3e00fc722e7d7ce90212)), closes [#1](https://github.com/antialias/soroban-abacus-flashcards/issues/1) ## [3.22.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.22.0...v3.22.1) (2025-10-16) ### Bug Fixes - **arcade:** add Number Guesser to game config helpers ([7d1a351](https://github.com/antialias/soroban-abacus-flashcards/commit/7d1a351ed6a1442ae34f6b75d46039bfa77a921b)) - **nav:** update types for registry games with nullable gameName ([a51e539](https://github.com/antialias/soroban-abacus-flashcards/commit/a51e539d023681daf639ec104e79079c8ceec98e)) ## [3.22.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.21.0...v3.22.0) (2025-10-16) ### Features - **arcade:** add Number Guesser demo game with plugin architecture ([0e3c058](https://github.com/antialias/soroban-abacus-flashcards/commit/0e3c0587073a69574a50f05c467f2499296012bf)) ## [3.21.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.20.0...v3.21.0) (2025-10-15) ### Features - **arcade:** add modular game SDK and registry system ([de30bec](https://github.com/antialias/soroban-abacus-flashcards/commit/de30bec47923565fe5d1d5a6f719f3fc4e9d1509)) ## [3.20.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.19.0...v3.20.0) (2025-10-15) ### Features - adjust tier probabilities for more abacus flavor ([49219e3](https://github.com/antialias/soroban-abacus-flashcards/commit/49219e34cde32736155a11929d10581e783cba69)) ### Code Refactoring - use per-word-type tier selection for name generation ([499ee52](https://github.com/antialias/soroban-abacus-flashcards/commit/499ee525a835249b439044cf602bf9f0ff322cec)) ## [3.19.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.18.1...v3.19.0) (2025-10-15) ### Features - implement avatar-themed name generation with probabilistic mixing ([76a8472](https://github.com/antialias/soroban-abacus-flashcards/commit/76a8472f12d251071b97f2288f62f0b358576232)) ## [3.18.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.18.0...v3.18.1) (2025-10-15) ### Bug Fixes - **arcade:** prevent empty update in settings API when only gameConfig changes ([ffb626f](https://github.com/antialias/soroban-abacus-flashcards/commit/ffb626f4038fd32d0f40dba8d83ae4d881d698d0)) ## [3.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.14...v3.18.0) (2025-10-15) ### Features - add drizzle migration for room_game_configs table ([3bae00b](https://github.com/antialias/soroban-abacus-flashcards/commit/3bae00b9a9dc925039a02fe07d036a2fc5e0fb79)) ### Documentation - document manual migration of room_game_configs table ([ff79140](https://github.com/antialias/soroban-abacus-flashcards/commit/ff791409cf4bae1a5df43eb974eacbc7612d8eec)) ## [3.17.14](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.13...v3.17.14) (2025-10-15) ### Bug Fixes - **arcade:** resolve TypeScript errors in game config helpers ([04c9944](https://github.com/antialias/soroban-abacus-flashcards/commit/04c9944f2ed1025f5a4ece61761889edd08cc60d)) ### Documentation - **arcade:** update GAME_SETTINGS_PERSISTENCE.md for new schema ([260bdc2](https://github.com/antialias/soroban-abacus-flashcards/commit/260bdc2e9d458cb42a96d3ed36a18134260b4520)) ## [3.17.13](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.12...v3.17.13) (2025-10-15) ### Code Refactoring - **arcade:** migrate game settings to normalized database schema ([1bd7354](https://github.com/antialias/soroban-abacus-flashcards/commit/1bd73544df6d62416961eea0b358955aaf82b79d)) ## [3.17.12](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.11...v3.17.12) (2025-10-15) ### Code Refactoring - **arcade:** remove non-productive debug logging from memory-quiz ([38e554e](https://github.com/antialias/soroban-abacus-flashcards/commit/38e554e6ea0386e48798338dd938e50ba73d5576)) ### Documentation - **arcade:** document game settings persistence architecture ([8f8f112](https://github.com/antialias/soroban-abacus-flashcards/commit/8f8f112de222e40901d4b3168fa751d233337e4b)) ## [3.17.11](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.10...v3.17.11) (2025-10-15) ### Bug Fixes - **memory-quiz:** fix playMode persistence by updating validator ([de0efd5](https://github.com/antialias/soroban-abacus-flashcards/commit/de0efd59321ec779cddb900724035884290419b7)) ## [3.17.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.9...v3.17.10) (2025-10-15) ### Bug Fixes - **memory-quiz:** persist playMode setting across game switches ([487ca7f](https://github.com/antialias/soroban-abacus-flashcards/commit/487ca7fba62e370c85bc3779ca8a96eb2c2cc3e3)) ## [3.17.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.8...v3.17.9) (2025-10-15) ### Bug Fixes - **arcade:** read nested gameConfig correctly when creating sessions ([94ef392](https://github.com/antialias/soroban-abacus-flashcards/commit/94ef39234d362b82e032cb69d3561b9fcb436eaf)) ## [3.17.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.7...v3.17.8) (2025-10-15) ### Bug Fixes - **arcade:** preserve game settings when returning to game selection ([0ee7739](https://github.com/antialias/soroban-abacus-flashcards/commit/0ee7739091d60580d2f98cfe288b8586b03348f3)) ## [3.17.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.6...v3.17.7) (2025-10-15) ### Bug Fixes - **arcade:** prevent gameConfig from being overwritten when switching games ([a89d3a9](https://github.com/antialias/soroban-abacus-flashcards/commit/a89d3a970137471e2652de992c45370dbb97416d)) ## [3.17.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.5...v3.17.6) (2025-10-15) ### Code Refactoring - **logging:** use JSON.stringify for all object logging ([c33698c](https://github.com/antialias/soroban-abacus-flashcards/commit/c33698ce52ebdc18ce3a0d856f9241c7389ed651)) ## [3.17.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.4...v3.17.5) (2025-10-15) ### Bug Fixes - **arcade:** implement settings persistence for matching game ([08fe432](https://github.com/antialias/soroban-abacus-flashcards/commit/08fe4326a6a7c484b9058a241f4ff79b3fb5125f)) ## [3.17.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.3...v3.17.4) (2025-10-15) ### Bug Fixes - **matching:** add settings persistence to matching game ([00dcb87](https://github.com/antialias/soroban-abacus-flashcards/commit/00dcb872b7e70bdb7de301b56fe42195e6ee923f)) ## [3.17.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.2...v3.17.3) (2025-10-15) ### Bug Fixes - **arcade:** preserve gameConfig when switching games ([2273c71](https://github.com/antialias/soroban-abacus-flashcards/commit/2273c71a872a5122d0b2023835fe30640106048e)) ### Code Refactoring - remove verbose console logging for cleaner debugging ([9cb5fdd](https://github.com/antialias/soroban-abacus-flashcards/commit/9cb5fdd2fa43560adc32dd052f47a7b06b2c5b69)) ## [3.17.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.1...v3.17.2) (2025-10-15) ### Bug Fixes - **room-data:** update query cache when gameConfig changes ([7cea297](https://github.com/antialias/soroban-abacus-flashcards/commit/7cea297095b78d74f5b77ca83489ec1be684a486)) ## [3.17.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.17.0...v3.17.1) (2025-10-15) ### Bug Fixes - **arcade-rooms:** navigate to invite link after room creation ([1922b21](https://github.com/antialias/soroban-abacus-flashcards/commit/1922b2122bb1bc4aeada7526d8c46aa89024bb00)) - **memory-quiz:** scope game settings by game name for proper persistence ([3dfe54f](https://github.com/antialias/soroban-abacus-flashcards/commit/3dfe54f1cb89bd636e763e1c5acb03776f97c011)) ## [3.17.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.16.0...v3.17.0) (2025-10-15) ### Features - **memory-quiz:** persist game settings per-game across sessions ([05a8e0a](https://github.com/antialias/soroban-abacus-flashcards/commit/05a8e0a84272c6c45a4014413ee00726eb88b76a)) ## [3.16.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.15.2...v3.16.0) (2025-10-15) ### Features - **arcade:** broadcast game selection changes to all room members ([b99e754](https://github.com/antialias/soroban-abacus-flashcards/commit/b99e7543952bb0d47f42e79dc4226b3c1280a0ee)) ## [3.15.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.15.1...v3.15.2) (2025-10-15) ### Bug Fixes - **memory-quiz:** prevent duplicate card processing from optimistic updates ([51676fc](https://github.com/antialias/soroban-abacus-flashcards/commit/51676fc15f5bc15cdb43393d3e66f7c5a0667868)) ## [3.15.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.15.0...v3.15.1) (2025-10-15) ### Bug Fixes - **memory-quiz:** synchronize card display across all players in multiplayer ([472f201](https://github.com/antialias/soroban-abacus-flashcards/commit/472f201088d82f92030273fadaf8a8e488820d6c)) ## [3.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.14.4...v3.15.0) (2025-10-15) ### Features - **memory-quiz:** add multiplayer support with redesigned scoreboards ([1cf4469](https://github.com/antialias/soroban-abacus-flashcards/commit/1cf44696c26473ce4ab2fc2039ff42f08c20edb6)) - **memory-quiz:** show player emojis on cards to indicate who found them ([05bd11a](https://github.com/antialias/soroban-abacus-flashcards/commit/05bd11a133706c9ed8c09c744da7ca8955fa979a)) ### Bug Fixes - **arcade:** add defensive checks and update test fixtures ([a93d981](https://github.com/antialias/soroban-abacus-flashcards/commit/a93d981d1ab3abed019b28cebe87525191313cc7)) ## [3.14.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.14.3...v3.14.4) (2025-10-15) ### Bug Fixes - **memory-quiz:** prevent input lag during rapid typing in room mode ([b45139b](https://github.com/antialias/soroban-abacus-flashcards/commit/b45139b588d0ab6df4d6c1003c1b65b634e2b041)) ## [3.14.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.14.2...v3.14.3) (2025-10-15) ### Bug Fixes - **arcade:** delete old session when room game changes ([98a3a25](https://github.com/antialias/soroban-abacus-flashcards/commit/98a3a2573db51899c41ba02796895d676c4e16ef)) ## [3.14.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.14.1...v3.14.2) (2025-10-15) ### Bug Fixes - **room:** update GAME_TYPE_TO_NAME mapping for memory-quiz ([4afa171](https://github.com/antialias/soroban-abacus-flashcards/commit/4afa171af212902120599b3d68f58cfbdf7820b0)) ## [3.14.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.14.0...v3.14.1) (2025-10-14) ### Bug Fixes - resolve Memory Quiz room-based multiplayer validation issues ([2ffeade](https://github.com/antialias/soroban-abacus-flashcards/commit/2ffeade43710b5f3fff9991cc84763bbdbf97010)) ## [3.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.7...v3.14.0) (2025-10-14) ### Features - **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)) ### Bug Fixes - **player-config:** correct label positioning in player settings dialog ([554cc40](https://github.com/antialias/soroban-abacus-flashcards/commit/554cc4063bc756c9c9cd1adf0c1964d3f2f6151b)) ### Code Refactoring - implement in-room game selection UI ([f07b96d](https://github.com/antialias/soroban-abacus-flashcards/commit/f07b96d26eb9f63f3ee55f721139c37ccc34c3df)) - make game_name nullable to support in-room game selection ([a9a6cef](https://github.com/antialias/soroban-abacus-flashcards/commit/a9a6cefafcaf7340902328ef1cb02eb3fdd3aa84)) - **nav:** rename emphasizeGameContext to emphasizePlayerSelection ([6bb7016](https://github.com/antialias/soroban-abacus-flashcards/commit/6bb7016eea1e8ca40204a921db4a8b8fb9a06f73)) ## [3.13.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.6...v3.13.7) (2025-10-14) ### Bug Fixes - **toast:** scope animations to prevent affecting other UI elements ([245ed8a](https://github.com/antialias/soroban-abacus-flashcards/commit/245ed8a625ba848f8cd79d51bfd88600cd77f0b9)) ## [3.13.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.5...v3.13.6) (2025-10-14) ### Bug Fixes - **nav:** navigate to /arcade/room (not /arcade/rooms/{id}) ([1c55f36](https://github.com/antialias/soroban-abacus-flashcards/commit/1c55f3630cb5f07b685555e41baa5a49314f15a3)) ## [3.13.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.4...v3.13.5) (2025-10-14) ### Bug Fixes - **nav:** navigate to room after creation from (+) menu ([21e6e33](https://github.com/antialias/soroban-abacus-flashcards/commit/21e6e33173e7939102a7e6d6a7bd5168a97a49d6)) ### Documentation - add production deployment guide ([6d16436](https://github.com/antialias/soroban-abacus-flashcards/commit/6d164361331fae2135afd84ab6e6f38a241b9170)) ## [3.13.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.3...v3.13.4) (2025-10-14) ### Bug Fixes - **api:** include members and memberPlayers in room creation response ([8320d9e](https://github.com/antialias/soroban-abacus-flashcards/commit/8320d9e730e2b9964e509847dfa504a78b721b5a)) ## [3.13.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.2...v3.13.3) (2025-10-14) ### Bug Fixes - **migrations:** add migration 0009 for display_password column ([040d749](https://github.com/antialias/soroban-abacus-flashcards/commit/040d7495a0801076b252d2574023f5323540db1a)) ### Code Refactoring - replace browser alert() calls with toast notifications ([87ef356](https://github.com/antialias/soroban-abacus-flashcards/commit/87ef35682e5c129033f21b91987fc84a45f43ad3)) ## [3.13.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.1...v3.13.2) (2025-10-14) ### Bug Fixes - **arcade:** only notify room creator of join requests ([bc571e3](https://github.com/antialias/soroban-abacus-flashcards/commit/bc571e3d0d11fe4142680132d551e25ca626d950)) ## [3.13.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.13.0...v3.13.1) (2025-10-14) ### Bug Fixes - **arcade:** allow room creator to rejoin restricted/approval rooms ([654ba19](https://github.com/antialias/soroban-abacus-flashcards/commit/654ba19ccca595d34ad205c036c18afb99a494c7)) ## [3.13.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.12.0...v3.13.0) (2025-10-14) ### Features - **moderation:** add inline feedback and persistent password display ([86e3d41](https://github.com/antialias/soroban-abacus-flashcards/commit/86e3d4199628f95048b9265c9de0adfdc2934f93)) ## [3.12.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.11.1...v3.12.0) (2025-10-14) ### Features - **moderation:** improve password input with copy button ([2580e47](https://github.com/antialias/soroban-abacus-flashcards/commit/2580e474d08bf91477339e998b2c70962a633f41)) ## [3.11.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.11.0...v3.11.1) (2025-10-14) ### Bug Fixes - **moderation:** improve access mode settings UX ([dd9e657](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9e657db85752b32ff91ae1b33a0bf7a7628e07)) ## [3.11.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.10.0...v3.11.0) (2025-10-14) ### Features - add name generator button and abacus emoji ([07212e4](https://github.com/antialias/soroban-abacus-flashcards/commit/07212e4df0c7fd4b8cccf935c48b14164df6961d)) ### Code Refactoring - make player names abacus and arithmetic themed ([97daad9](https://github.com/antialias/soroban-abacus-flashcards/commit/97daad9abb40a6f4d59ca8a4d4b671822b7b0955)) ## [3.10.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.9.2...v3.10.0) (2025-10-14) ### Features - add fun automatic player naming system ([249257c](https://github.com/antialias/soroban-abacus-flashcards/commit/249257c6c77d503b48479065664c96c5de36a234)) ## [3.9.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.9.1...v3.9.2) (2025-10-14) ### Bug Fixes - remove duplicate ModerationNotifications causing double toasts ([c6886a0](https://github.com/antialias/soroban-abacus-flashcards/commit/c6886a0e59b3cbf051a828e0157495101cd8c823)) ## [3.9.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.9.0...v3.9.1) (2025-10-14) ### Bug Fixes - reset join request toast state when moderation event cleared ([6beb58a](https://github.com/antialias/soroban-abacus-flashcards/commit/6beb58a7b8f8e1841c71729a3517ab459e924aa9)) ## [3.9.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.8.1...v3.9.0) (2025-10-14) ### Features - prevent invitations to retired rooms ([a7c3c1f](https://github.com/antialias/soroban-abacus-flashcards/commit/a7c3c1f4cd802985c8f040bc1cdf3ea4482a2fce)) ## [3.8.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.8.0...v3.8.1) (2025-10-14) ### Bug Fixes - improve kicked modal message for retired room ejections ([f865ce1](https://github.com/antialias/soroban-abacus-flashcards/commit/f865ce16ecf7648e41549795c8137f4fc33e34ac)) ## [3.8.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.7.1...v3.8.0) (2025-10-14) ### Features - implement proper retired room behavior with member expulsion ([a2d5368](https://github.com/antialias/soroban-abacus-flashcards/commit/a2d53680f27db04b2cd09973e62a76c5a7d4ce06)) ## [3.7.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.7.0...v3.7.1) (2025-10-14) ### Bug Fixes - improve join request approval error handling with actionable messages ([57bf846](https://github.com/antialias/soroban-abacus-flashcards/commit/57bf8460c8ecff374355bfb93f4b06dfbb148273)) ## [3.7.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.6.3...v3.7.0) (2025-10-14) ### Features - add prominent join request approval notifications for room moderators ([036da6d](https://github.com/antialias/soroban-abacus-flashcards/commit/036da6de66ca7d3f459c55df657b04a9e88d9cd3)) ## [3.6.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.6.2...v3.6.3) (2025-10-14) ### Bug Fixes - update locked room terminology and allow existing members ([1ddf985](https://github.com/antialias/soroban-abacus-flashcards/commit/1ddf985938d9542fe26e44da58234f3d4e3c9543)) ## [3.6.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.6.1...v3.6.2) (2025-10-14) ### Bug Fixes - allow join with pending invitation for restricted rooms ([85b2cf9](https://github.com/antialias/soroban-abacus-flashcards/commit/85b2cf98167ccf632ab634a94eb436e1eb584614)) ## [3.6.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.6.0...v3.6.1) (2025-10-14) ### Bug Fixes - join user socket channel to receive approval notifications ([7d08fdd](https://github.com/antialias/soroban-abacus-flashcards/commit/7d08fdd90643920857eda09998ac01afbae74154)) ### Code Refactoring - remove redundant polling from approval notifications ([0d4f400](https://github.com/antialias/soroban-abacus-flashcards/commit/0d4f400dca02ad9497522c24fded8b6d07d85fd2)) ## [3.6.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.5.0...v3.6.0) (2025-10-14) ### Features - add socket listener and polling for approval notifications ([35b4a72](https://github.com/antialias/soroban-abacus-flashcards/commit/35b4a72c8b2f80a74b5d2fe02b048d4ec4d1d6f2)) ## [3.5.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.4.0...v3.5.0) (2025-10-14) ### Features - replace access mode dropdown with visual button grid ([e5d0672](https://github.com/antialias/soroban-abacus-flashcards/commit/e5d067205989d7c3105998dcd7d67fd0408f332c)) ## [3.4.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.3.1...v3.4.0) (2025-10-14) ### Features - add waiting state for approval requests in JoinRoomModal ([f9b0429](https://github.com/antialias/soroban-abacus-flashcards/commit/f9b0429a2e2d22944acba66009dd87a9d9eb28c2)) ## [3.3.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.3.0...v3.3.1) (2025-10-14) ### Bug Fixes - add POST handler for join requests API endpoint ([d3e5cdf](https://github.com/antialias/soroban-abacus-flashcards/commit/d3e5cdfc54f2749f27c6f8b8db854a8d0b6029f8)) ## [3.3.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.2.1...v3.3.0) (2025-10-14) ### Features - implement approval request flow for share links ([4a6b3ca](https://github.com/antialias/soroban-abacus-flashcards/commit/4a6b3cabe5c6aa42f4fa00ed09f9b3713f097539)) ## [3.2.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.2.0...v3.2.1) (2025-10-14) ### Bug Fixes - allow password retry when joining via share link ([e469363](https://github.com/antialias/soroban-abacus-flashcards/commit/e469363699071610a35e0b5c507d0e15e29daa44)) ## [3.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.1.2...v3.2.0) (2025-10-14) ### Features - improve room creation UX and add password support for share links ([dcbb507](https://github.com/antialias/soroban-abacus-flashcards/commit/dcbb5072d8e0a12838fe70e3faa85f94cd63b0c1)) ## [3.1.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.1.1...v3.1.2) (2025-10-14) ### Bug Fixes - replace last remaining isLoading with isPending in CreateRoomModal ([85d13cc](https://github.com/antialias/soroban-abacus-flashcards/commit/85d13cc552cfe2e825f8ea20c7db00d666599134)) ## [3.1.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.1.0...v3.1.1) (2025-10-14) ### Bug Fixes - use useCreateRoom hook instead of nonexistent createRoom from useRoomData ([f7d63b3](https://github.com/antialias/soroban-abacus-flashcards/commit/f7d63b30ac498b63797ae8683a0beb435a1c97b3)) ## [3.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v3.0.0...v3.1.0) (2025-10-14) ### Features - add room access modes and ownership transfer ([6ff21c4](https://github.com/antialias/soroban-abacus-flashcards/commit/6ff21c4f1dd0dd1db14257612809b4d40512689a)) ### Bug Fixes - replace isLocked with accessMode and add bcryptjs ([a74b96b](https://github.com/antialias/soroban-abacus-flashcards/commit/a74b96bb6fe331d27f3d27b8f77a3ce32b254bce)) ## [3.0.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v3.0.0) (2025-10-13) ### ⚠ BREAKING CHANGES - 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 ### Features - 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 centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - 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 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 player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - add real-time socket updates for moderation events ([86ceba3](https://github.com/antialias/soroban-abacus-flashcards/commit/86ceba3df3d39812d63fbf5d03fc37d8c3a75027)) - add room creation and join flow UI ([7f95032](https://github.com/antialias/soroban-abacus-flashcards/commit/7f950322530e8deb2e330d0d2147d1a20fa1e642)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - integrate moderation system into arcade pages ([087652f](https://github.com/antialias/soroban-abacus-flashcards/commit/087652f9e7091a93c02906162275ef88ec5e44c6)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - improve authorization error handling and add missing decline invitation endpoint ([97669ad](https://github.com/antialias/soroban-abacus-flashcards/commit/97669ad084b077cbf6f33b570710016ba666cdb6)) - **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)) - **moderation:** don't show pending invitation for users already in room ([fae5920](https://github.com/antialias/soroban-abacus-flashcards/commit/fae5920e2fda910f8db724103a837537b1063ac7)) - 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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - remove old arcade guard system ([2e6469b](https://github.com/antialias/soroban-abacus-flashcards/commit/2e6469bed45f533a776ae9459f5bd0a6d3cf0022)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - update core UI components ([55ccf09](https://github.com/antialias/soroban-abacus-flashcards/commit/55ccf097d93700a6705acdbad2272286985185e5)) - update game pages for room-based multiplayer ([54846bd](https://github.com/antialias/soroban-abacus-flashcards/commit/54846bdc3f3da8f32228b15f5269758e3f88f121)) - update nav components for room-based system ([31ac958](https://github.com/antialias/soroban-abacus-flashcards/commit/31ac958d3312b25dfaf2cf024b34b26159ec9e93)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) - add tests for room and moderation features ([063a8e5](https://github.com/antialias/soroban-abacus-flashcards/commit/063a8e52fe6b3a0c5c7ffd74500485b51f6b038b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-13) ### Features - 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 centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - 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 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 player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - add real-time socket updates for moderation events ([86ceba3](https://github.com/antialias/soroban-abacus-flashcards/commit/86ceba3df3d39812d63fbf5d03fc37d8c3a75027)) - add room creation and join flow UI ([7f95032](https://github.com/antialias/soroban-abacus-flashcards/commit/7f950322530e8deb2e330d0d2147d1a20fa1e642)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - integrate moderation system into arcade pages ([087652f](https://github.com/antialias/soroban-abacus-flashcards/commit/087652f9e7091a93c02906162275ef88ec5e44c6)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **moderation:** don't show pending invitation for users already in room ([fae5920](https://github.com/antialias/soroban-abacus-flashcards/commit/fae5920e2fda910f8db724103a837537b1063ac7)) - 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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - remove old arcade guard system ([2e6469b](https://github.com/antialias/soroban-abacus-flashcards/commit/2e6469bed45f533a776ae9459f5bd0a6d3cf0022)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - update core UI components ([55ccf09](https://github.com/antialias/soroban-abacus-flashcards/commit/55ccf097d93700a6705acdbad2272286985185e5)) - update game pages for room-based multiplayer ([54846bd](https://github.com/antialias/soroban-abacus-flashcards/commit/54846bdc3f3da8f32228b15f5269758e3f88f121)) - update nav components for room-based system ([31ac958](https://github.com/antialias/soroban-abacus-flashcards/commit/31ac958d3312b25dfaf2cf024b34b26159ec9e93)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) - add tests for room and moderation features ([063a8e5](https://github.com/antialias/soroban-abacus-flashcards/commit/063a8e52fe6b3a0c5c7ffd74500485b51f6b038b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-13) ### Features - 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 centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - 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 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 player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - add real-time socket updates for moderation events ([86ceba3](https://github.com/antialias/soroban-abacus-flashcards/commit/86ceba3df3d39812d63fbf5d03fc37d8c3a75027)) - add room creation and join flow UI ([7f95032](https://github.com/antialias/soroban-abacus-flashcards/commit/7f950322530e8deb2e330d0d2147d1a20fa1e642)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - integrate moderation system into arcade pages ([087652f](https://github.com/antialias/soroban-abacus-flashcards/commit/087652f9e7091a93c02906162275ef88ec5e44c6)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **moderation:** don't show pending invitation for users already in room ([fae5920](https://github.com/antialias/soroban-abacus-flashcards/commit/fae5920e2fda910f8db724103a837537b1063ac7)) - **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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - remove old arcade guard system ([2e6469b](https://github.com/antialias/soroban-abacus-flashcards/commit/2e6469bed45f533a776ae9459f5bd0a6d3cf0022)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - update core UI components ([55ccf09](https://github.com/antialias/soroban-abacus-flashcards/commit/55ccf097d93700a6705acdbad2272286985185e5)) - update game pages for room-based multiplayer ([54846bd](https://github.com/antialias/soroban-abacus-flashcards/commit/54846bdc3f3da8f32228b15f5269758e3f88f121)) - update nav components for room-based system ([31ac958](https://github.com/antialias/soroban-abacus-flashcards/commit/31ac958d3312b25dfaf2cf024b34b26159ec9e93)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) - add tests for room and moderation features ([063a8e5](https://github.com/antialias/soroban-abacus-flashcards/commit/063a8e52fe6b3a0c5c7ffd74500485b51f6b038b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-13) ### Features - 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 centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - 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 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 player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - add real-time socket updates for moderation events ([86ceba3](https://github.com/antialias/soroban-abacus-flashcards/commit/86ceba3df3d39812d63fbf5d03fc37d8c3a75027)) - add room creation and join flow UI ([7f95032](https://github.com/antialias/soroban-abacus-flashcards/commit/7f950322530e8deb2e330d0d2147d1a20fa1e642)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - integrate moderation system into arcade pages ([087652f](https://github.com/antialias/soroban-abacus-flashcards/commit/087652f9e7091a93c02906162275ef88ec5e44c6)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - remove old arcade guard system ([2e6469b](https://github.com/antialias/soroban-abacus-flashcards/commit/2e6469bed45f533a776ae9459f5bd0a6d3cf0022)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - update core UI components ([55ccf09](https://github.com/antialias/soroban-abacus-flashcards/commit/55ccf097d93700a6705acdbad2272286985185e5)) - update game pages for room-based multiplayer ([54846bd](https://github.com/antialias/soroban-abacus-flashcards/commit/54846bdc3f3da8f32228b15f5269758e3f88f121)) - update nav components for room-based system ([31ac958](https://github.com/antialias/soroban-abacus-flashcards/commit/31ac958d3312b25dfaf2cf024b34b26159ec9e93)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) - add tests for room and moderation features ([063a8e5](https://github.com/antialias/soroban-abacus-flashcards/commit/063a8e52fe6b3a0c5c7ffd74500485b51f6b038b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-12) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-12) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **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:** 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) - **zIndex:** create centralized z-index layering system ([a204c83](https://github.com/antialias/soroban-abacus-flashcards/commit/a204c83afcb57e3cc56ca0ae7cd237cd5a453be9)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-12) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **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)) - **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:** 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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - **matching:** unify duplicate MemoryGrid components into shared implementation ([5f7067a](https://github.com/antialias/soroban-abacus-flashcards/commit/5f7067a106447de36472981b44cba490e51c0cdf)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **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:** 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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - **matching:** integrate game type into nav, remove redundant header ([389df29](https://github.com/antialias/soroban-abacus-flashcards/commit/389df29dc3bc18f8498b9f40003028da32015035)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **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:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** add z-index to turn labels to prevent avatar overlap ([7c294da](https://github.com/antialias/soroban-abacus-flashcards/commit/7c294dafff4e4d70831e12897aec06092cd3ff3f)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** prevent turn label text from being obscured ([c4b00dd](https://github.com/antialias/soroban-abacus-flashcards/commit/c4b00dd679aa2f87ae6b84a37e5b6d0d38113606)) - **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove animation/enlargement from network player turn indicator ([53079ed](https://github.com/antialias/soroban-abacus-flashcards/commit/53079ede13ce9734cd3e702f27e6cb8f7fff626e)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **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:** 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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** apply turn indicators to arcade version too ([e6f96a8](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f96a8b992c15f868ac5b1c1ac36b32caf433ed)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** only apply turn indicator when game is active ([cb4c061](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4c061d11433799a0091f4a958371ff7cef7a00)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **matching:** use nav avatars as turn indicators ([7263828](https://github.com/antialias/soroban-abacus-flashcards/commit/7263828ed494a6487999c8436af53618715b3864)) - **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **matching:** use UUID instead of numeric index for scores ([5036cb0](https://github.com/antialias/soroban-abacus-flashcards/commit/5036cb00b6eff91cfa52b5babb7e5a91ff7e18b3)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **nav:** add pulsing indicator for offline network players ([64fb30e](https://github.com/antialias/soroban-abacus-flashcards/commit/64fb30e7eca7b485687329b9dd3d9e90ac507e2d)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **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)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **nav:** unify room dropdown with join code and game menu ([f7b83f8](https://github.com/antialias/soroban-abacus-flashcards/commit/f7b83f8c149b532321251abed98a94874196b2f5)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - **nav:** remove opacity reduction from local players ([5215af8](https://github.com/antialias/soroban-abacus-flashcards/commit/5215af801fc7e7412dc1c84e6abf1231f7670bfb)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **nav:** unify room dropdown with join code and game menu ([f7b83f8](https://github.com/antialias/soroban-abacus-flashcards/commit/f7b83f8c149b532321251abed98a94874196b2f5)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - **nav:** improve text contrast in room info pane ([3e691cb](https://github.com/antialias/soroban-abacus-flashcards/commit/3e691cb06d64e32f65146ffd690fa1c25e9b487d)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - **nav:** unify room dropdown with join code and game menu ([f7b83f8](https://github.com/antialias/soroban-abacus-flashcards/commit/f7b83f8c149b532321251abed98a94874196b2f5)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - stack game title dropdown ABOVE room pane, not inside it ([7bc815f](https://github.com/antialias/soroban-abacus-flashcards/commit/7bc815fd7dbbb1489a17782b2df0c3fe508dd574)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - move game name into room pane, remove player count ([eeb8d52](https://github.com/antialias/soroban-abacus-flashcards/commit/eeb8d52d03301038aadd69153becad3498ee427b)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - add player count to stacked room info ([540f6b7](https://github.com/antialias/soroban-abacus-flashcards/commit/540f6b76d05f561baa581d67070ab43134d8b5f6)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - combine mode and room into single unified pane ([7a6f2ac](https://github.com/antialias/soroban-abacus-flashcards/commit/7a6f2ac6ebf7d750bf6d859d0161d7325fb5048e)) - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - pixel-perfect alignment across all nav elements ([fa78a2c](https://github.com/antialias/soroban-abacus-flashcards/commit/fa78a2c001f3530b0a0929411e6e0addbc0abda0)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - implement Option A - balanced alignment and visual hierarchy ([6ad7170](https://github.com/antialias/soroban-abacus-flashcards/commit/6ad71702f94c7f1d26bea12deb234578d86dda98)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - stack mode indicator above room info ([d1aa567](https://github.com/antialias/soroban-abacus-flashcards/commit/d1aa567c1e3b4e6408adef241923c32b6a7b7597)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - move game controls into title dropdown menu ([e39a031](https://github.com/antialias/soroban-abacus-flashcards/commit/e39a0313cb0886595756ffcca262d8e57fda3c06)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - restructure nav so player avatars truly span both rows ([e0fd793](https://github.com/antialias/soroban-abacus-flashcards/commit/e0fd7938128df7fa64df43b946da2a8b176be7dd)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - comprehensive navigation polish - prominence, contrast, cohesion ([1ba58b9](https://github.com/antialias/soroban-abacus-flashcards/commit/1ba58b9547bf5a6b6c06f94740fedd730481171d)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - redesign GameControlButtons with translucent aesthetic ([5720c7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5720c7dca329a008d6c9ac0995106783bc4653fa)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) - redesign room info as compact inline badge with click-to-copy ([6b3a440](https://github.com/antialias/soroban-abacus-flashcards/commit/6b3a4403695cc2f32df684005784a11f054827ff)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - compact room info display with join code in tooltip ([a6b1610](https://github.com/antialias/soroban-abacus-flashcards/commit/a6b1610993ce6ab9556cd40ae5b0528e3a22f991)) - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - restructure GameContextNav to 2x2 grid layout ([9c9270f](https://github.com/antialias/soroban-abacus-flashcards/commit/9c9270f931c9f18d581baa00e8d832409225efb7)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-11) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) - improve arcade nav player grouping and add room join code display ([8e9980d](https://github.com/antialias/soroban-abacus-flashcards/commit/8e9980dc82ba2ab4ce973fc2c7ed259a20af9b19)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - populate session activePlayers from room members on join ([2d00939](https://github.com/antialias/soroban-abacus-flashcards/commit/2d00939f1b59a10d271f82098c1b88acb2245ce1)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - prevent duplicate arcade sessions per room ([4cc3de5](https://github.com/antialias/soroban-abacus-flashcards/commit/4cc3de5f43711bb2ffe9b10052108b27bba6889c)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - create arcade sessions on room join to enable config changes ([c29501f](https://github.com/antialias/soroban-abacus-flashcards/commit/c29501f6663cb6063f2ddef8b3fdb14c31927639)) - 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)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - 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)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - 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)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - clear hover state on turn changes and game transitions ([6fd425c](https://github.com/antialias/soroban-abacus-flashcards/commit/6fd425ce85ddbf5e0125f757dc9886915fb6f749)) - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - 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)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - 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)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - exclude dist from TypeScript compilation and add missing type import ([b7f1d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b7f1d5a5696888bb4fbf6d5da14ca333de0f0167)) - prevent database imports from being bundled into client code ([bda5bc6](https://github.com/antialias/soroban-abacus-flashcards/commit/bda5bc6c0e1043ee53aab8799c670d1072f70cc9)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.18.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.2...v2.18.0) (2025-10-10) ### Features - add centralized player ownership utilities ([1019a48](https://github.com/antialias/soroban-abacus-flashcards/commit/1019a487f893bcf8555ff1d0d87cce9f9cc5e048)) ### Bug Fixes - correct TypeScript build configuration to prevent .js pollution in src/ ([2b7ff23](https://github.com/antialias/soroban-abacus-flashcards/commit/2b7ff237cce7685f4f317d0bb4d1c993e6084a65)) - remove build artifacts from source control ([29f5adc](https://github.com/antialias/soroban-abacus-flashcards/commit/29f5adcfbcac97fb696355813dbf29e24c267d61)) - remove rootDir from tsconfig.server.json ([431e4a6](https://github.com/antialias/soroban-abacus-flashcards/commit/431e4a61deab5ef8cf4d99659c41e6bc5495cc9d)) - update Dockerfile to copy dist/ instead of socket-server.js and src/ ([e56517b](https://github.com/antialias/soroban-abacus-flashcards/commit/e56517b12996240157cd12b4c3e2272493f9745f)) ### Code Refactoring - re-export ownership utilities from player-manager ([e85f800](https://github.com/antialias/soroban-abacus-flashcards/commit/e85f800c3e77f3bcdb87eb3ceabdced098edd924)) - use centralized ownership in RoomMemoryPairsProvider ([6c66bb2](https://github.com/antialias/soroban-abacus-flashcards/commit/6c66bb27b75d98a460242da03124de9ad9298ce7)) - use centralized player ownership in session-manager ([a362e5e](https://github.com/antialias/soroban-abacus-flashcards/commit/a362e5e34a7e11638ae0f8cf08990e9579451ad5)) ### Documentation - add plan for centralizing player ownership logic ([d3ff89a](https://github.com/antialias/soroban-abacus-flashcards/commit/d3ff89a0ee53c32cc68ed01bf460919aa889d6a0)) ### Tests - add comprehensive integration tests for player ownership ([76a6390](https://github.com/antialias/soroban-abacus-flashcards/commit/76a63901c4844675bb8895381531178c25f36b7b)) ## [2.17.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.1...v2.17.2) (2025-10-10) ### Bug Fixes - correct playerMetadata userId assignment for room-based multiplayer ([53797db](https://github.com/antialias/soroban-abacus-flashcards/commit/53797dbb2d5ccb80e61cbc186ca0a344fe1fbd96)) ## [2.17.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.17.0...v2.17.1) (2025-10-10) ### Bug Fixes - correct hover avatar and turn indicator to show only current player ([0596ef6](https://github.com/antialias/soroban-abacus-flashcards/commit/0596ef65879a303f1f71863ef307af69bf270c70)) ## [2.17.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.7...v2.17.0) (2025-10-10) ### Features - hide hover avatar when card is flipped to reveal value ([a2aada2](https://github.com/antialias/soroban-abacus-flashcards/commit/a2aada2e6922fb3af363e0d191275e06b8f8f040)) ## [2.16.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.6...v2.16.7) (2025-10-10) ### Bug Fixes - compile TypeScript server files to JavaScript for production ([83b9a4d](https://github.com/antialias/soroban-abacus-flashcards/commit/83b9a4d976fa540782826afa13a35c92e706bf1e)) - remove standalone output mode incompatible with custom server ([c8da5a8](https://github.com/antialias/soroban-abacus-flashcards/commit/c8da5a8340c8798bba452b43244bc0e04ce8b0c5)) - update Dockerfile for non-standalone production builds ([14746c5](https://github.com/antialias/soroban-abacus-flashcards/commit/14746c568e58f4a847e0da2d866dbaeabf5a0e8b)) ## [2.16.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.5...v2.16.6) (2025-10-10) ### Bug Fixes - correct static files and public path in Docker image ([c287b19](https://github.com/antialias/soroban-abacus-flashcards/commit/c287b19a39e1506033db6de39aa4d3761cb65d62)) ## [2.16.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.4...v2.16.5) (2025-10-09) ### Bug Fixes - correct node_modules path for pnpm symlinks in Docker ([c12351f](https://github.com/antialias/soroban-abacus-flashcards/commit/c12351f2c99daaed710a1136eb13f6ccc54cbcff)) ## [2.16.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.3...v2.16.4) (2025-10-09) ### Bug Fixes - correct Docker CMD to use root-level server.js ([48b47e9](https://github.com/antialias/soroban-abacus-flashcards/commit/48b47e9bdb0da44746282cd7cf7599a69bf5130d)) ## [2.16.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.2...v2.16.3) (2025-10-09) ### Bug Fixes - use game state playerMetadata instead of GameModeContext in UI components ([388c254](https://github.com/antialias/soroban-abacus-flashcards/commit/388c25451d11b85236c1f7682fe2f7a62a15d5eb)) ## [2.16.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.1...v2.16.2) (2025-10-09) ### Bug Fixes - use only local user's players in LocalMemoryPairsProvider ([c26138f](https://github.com/antialias/soroban-abacus-flashcards/commit/c26138ffb55a237a99cb6ff399c8a2ac54a22b51)) ## [2.16.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.16.0...v2.16.1) (2025-10-09) ### Bug Fixes - convert LocalMemoryPairsProvider to pure client-side with useReducer ([b128db1](https://github.com/antialias/soroban-abacus-flashcards/commit/b128db1783a8dcffe7879745c3342add2f9ffe29)) ## [2.16.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.15.0...v2.16.0) (2025-10-09) ### Features - fade out hover avatar when player stops hovering ([820eeb4](https://github.com/antialias/soroban-abacus-flashcards/commit/820eeb4fb03ad8be6a86dd0a26e089052224f427)) ## [2.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.14.3...v2.15.0) (2025-10-09) ### Features - implement smooth hover avatar animations with react-spring ([442c6b4](https://github.com/antialias/soroban-abacus-flashcards/commit/442c6b4529ba5c820b1fe8a64805a3d85489a8ea)) ## [2.14.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.14.2...v2.14.3) (2025-10-09) ### Bug Fixes - enable smooth spring animations between card hovers ([8d53b58](https://github.com/antialias/soroban-abacus-flashcards/commit/8d53b589aa17ebc6d0a9251b3006fd8a90f90a61)) ## [2.14.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.14.1...v2.14.2) (2025-10-09) ### Bug Fixes - correct avatar positioning to prevent fly-in animation ([573d0df](https://github.com/antialias/soroban-abacus-flashcards/commit/573d0df20dcdac41021c46feb423dbf3782728f6)) ## [2.14.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.14.0...v2.14.1) (2025-10-09) ### Bug Fixes - prevent avatar fly-in and hide local player's own hover ([7f65a67](https://github.com/antialias/soroban-abacus-flashcards/commit/7f65a67cef3d7f0ebce1bd7417972a6138acfc46)) ## [2.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.13.0...v2.14.0) (2025-10-09) ### Features - improve hover avatars with smooth animation and 3D elevation ([71b11f4](https://github.com/antialias/soroban-abacus-flashcards/commit/71b11f4ef08a5f9c3f1c1aaabca21ef023d5c0ce)) ## [2.13.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.12.3...v2.13.0) (2025-10-09) ### Features - implement networked hover presence for multiplayer gameplay ([62f3730](https://github.com/antialias/soroban-abacus-flashcards/commit/62f3730542334a0580f5dad1c73adc333614ee58)) ### Code Refactoring - move canModifyPlayers logic into provider layer ([db9f909](https://github.com/antialias/soroban-abacus-flashcards/commit/db9f9096b446b078e1b4dfe970723bef54a6f4ae)) - properly separate LocalMemoryPairsProvider and RoomMemoryPairsProvider ([98822ec](https://github.com/antialias/soroban-abacus-flashcards/commit/98822ecda52bf004d9950e3f4c92c834fd820e49)) ## [2.12.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.12.2...v2.12.3) (2025-10-09) ### Bug Fixes - always show game control buttons in room-based sessions ([14ba422](https://github.com/antialias/soroban-abacus-flashcards/commit/14ba422919abd648e2a134ce167a5e6fd9f84e73)) ## [2.12.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.12.1...v2.12.2) (2025-10-09) ### Bug Fixes - use RoomMemoryPairsProvider in room page ([c279731](https://github.com/antialias/soroban-abacus-flashcards/commit/c27973191f0144604e17a8a14adf0a88df476e27)) ## [2.12.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.12.0...v2.12.1) (2025-10-09) ### Bug Fixes - export MemoryPairsContext to fix provider hook error ([80ad33e](https://github.com/antialias/soroban-abacus-flashcards/commit/80ad33eec0b6946702eaa9cf1b1c246852864b00)) ## [2.12.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.11.0...v2.12.0) (2025-10-09) ### Features - add networked hover state infrastructure for multiplayer presence ([d149799](https://github.com/antialias/soroban-abacus-flashcards/commit/d14979907c5df9b793a1c110028fc5b54457f507)) ## [2.11.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.10.1...v2.11.0) (2025-10-09) ### Features - add pause/resume game state architecture ([05eacac](https://github.com/antialias/soroban-abacus-flashcards/commit/05eacac438dbaf405ce91e188c53dbbe2e9f9507)) - add Resume button and config change warning to setup UI ([b5ee04f](https://github.com/antialias/soroban-abacus-flashcards/commit/b5ee04f57651f53517468fcc4c456f0ccb65a8e2)) - implement pause/resume in game providers with optimistic updates ([ce30fca](https://github.com/antialias/soroban-abacus-flashcards/commit/ce30fcaf55270f9089249bd13ba73a25fbfa5ab4)) ### Bug Fixes - convert guestId to internal userId for player ownership check ([3a01f46](https://github.com/antialias/soroban-abacus-flashcards/commit/3a01f4637d2081c66fe37c7f8cfee229442ec744)) - implement shared session architecture for room-based multiplayer ([2856f4b](https://github.com/antialias/soroban-abacus-flashcards/commit/2856f4b83fbcc6483d96cc6e7da2fe5bc911625d)) ## [2.10.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.10.1...v2.10.2) (2025-10-09) ### Bug Fixes - convert guestId to internal userId for player ownership check ([3a01f46](https://github.com/antialias/soroban-abacus-flashcards/commit/3a01f4637d2081c66fe37c7f8cfee229442ec744)) - implement shared session architecture for room-based multiplayer ([2856f4b](https://github.com/antialias/soroban-abacus-flashcards/commit/2856f4b83fbcc6483d96cc6e7da2fe5bc911625d)) ## [2.10.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.10.0...v2.10.1) (2025-10-09) ### Bug Fixes - enforce player ownership authorization for multiplayer games ([71b0aac](https://github.com/antialias/soroban-abacus-flashcards/commit/71b0aac13c970c03fe8d296d41e9472ad72a00fa)) ## [2.10.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.9.0...v2.10.0) (2025-10-09) ### Features - implement rich Radix UI tooltips for player avatars ([d03c789](https://github.com/antialias/soroban-abacus-flashcards/commit/d03c7898799b378f912f47d7267a00bc7ce3d580)) ## [2.9.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.7...v2.9.0) (2025-10-09) ### Features - implement auto-save for player settings modal ([a83dc09](https://github.com/antialias/soroban-abacus-flashcards/commit/a83dc097e43c265a297281da54754f58ac831754)) ## [2.8.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.6...v2.8.7) (2025-10-09) ### Bug Fixes - enable real-time player name updates across room members ([5171be3](https://github.com/antialias/soroban-abacus-flashcards/commit/5171be3d37980eb1c98aa0d1e1d6e06f589763d1)) ## [2.8.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.5...v2.8.6) (2025-10-09) ### Bug Fixes - prevent duplicate display of network avatars in nav ([d474ef0](https://github.com/antialias/soroban-abacus-flashcards/commit/d474ef07d69cf0b4f5dedd404616e3bbee7289fe)) ## [2.8.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.4...v2.8.5) (2025-10-09) ### Bug Fixes - remove redirect loop by not redirecting from room page ([10cf715](https://github.com/antialias/soroban-abacus-flashcards/commit/10cf71527f7cede7fd93e502dbfc59df99b5a524)) ## [2.8.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.3...v2.8.4) (2025-10-09) ### Bug Fixes - prevent redirect loops by checking if already at target URL ([c5268b7](https://github.com/antialias/soroban-abacus-flashcards/commit/c5268b79dee66aa02e14e2024fe1c6242a172ed3)) ## [2.8.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.2...v2.8.3) (2025-10-08) ### Bug Fixes - remove ArcadeGuardedPage from room page to prevent redirect loop ([4686f59](https://github.com/antialias/soroban-abacus-flashcards/commit/4686f59d245b2b502dc0764c223a5ce84bf1af44)) ## [2.8.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.1...v2.8.2) (2025-10-08) ### Bug Fixes - revert to showing only active players in room games ([87cc0b6](https://github.com/antialias/soroban-abacus-flashcards/commit/87cc0b64fb5f3debaf1d2f122aecfefc62922fed)) ## [2.8.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.8.0...v2.8.1) (2025-10-08) ### Bug Fixes - include all players from room members in room games ([28a2e7d](https://github.com/antialias/soroban-abacus-flashcards/commit/28a2e7d6511e70b83adf7d0465789a91026bc1f7)) ## [2.8.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.7.4...v2.8.0) (2025-10-08) ### Features - implement room-wide multi-user game state synchronization ([8175c43](https://github.com/antialias/soroban-abacus-flashcards/commit/8175c43533c474fff48eb128c97747033bfb434a)) ### Tests - add comprehensive tests for arcade guard and room navigation ([b49630f](https://github.com/antialias/soroban-abacus-flashcards/commit/b49630f3cb02ebbac75b4680948bbface314dccb)) ## [2.7.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.7.3...v2.7.4) (2025-10-08) ### Bug Fixes - respect enabled flag in useArcadeGuard WebSocket redirects ([01ff114](https://github.com/antialias/soroban-abacus-flashcards/commit/01ff114258ff7ab43ef2bd79b41c7035fe02ac70)) ### Code Refactoring - move room management pages to /arcade-rooms ([4316687](https://github.com/antialias/soroban-abacus-flashcards/commit/431668729cfb145d6e0c13947de2a82f27fa400d)) ## [2.7.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.7.2...v2.7.3) (2025-10-08) ### Bug Fixes - set room sessions to use /arcade/room URL ([9dac431](https://github.com/antialias/soroban-abacus-flashcards/commit/9dac431c1f91c246f67a059cda3cff6cbef40a43)) ## [2.7.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.7.1...v2.7.2) (2025-10-08) ### Bug Fixes - add hasAttemptedFetch flag to prevent premature redirect ([c30f585](https://github.com/antialias/soroban-abacus-flashcards/commit/c30f58581028878350282cad5231d614590d9f2b)) ## [2.7.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.7.0...v2.7.1) (2025-10-08) ### Bug Fixes - resolve race condition in /arcade/room redirect ([5ed2ab2](https://github.com/antialias/soroban-abacus-flashcards/commit/5ed2ab21cab408147081a493c8dd6b1de48b2d01)) ## [2.7.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.6.0...v2.7.0) (2025-10-08) ### Features - extend GameModeContext to support room-based multiplayer ([ee6094d](https://github.com/antialias/soroban-abacus-flashcards/commit/ee6094d59d26a9e80ba5d023ca6dc13143bea308)) ## [2.6.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.5.0...v2.6.0) (2025-10-08) ### Features - refactor room addressing to /arcade/room ([e7d2a73](https://github.com/antialias/soroban-abacus-flashcards/commit/e7d2a73ddf2048691325a18e3d71a7ece444c131)) ## [2.5.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.6...v2.5.0) (2025-10-08) ### Features - display room info and network players in mini app nav ([5e3261f](https://github.com/antialias/soroban-abacus-flashcards/commit/5e3261f3bec8c19ec88c9a35a7e6ef8eda88a55e)) ## [2.4.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.5...v2.4.6) (2025-10-08) ### Bug Fixes - real-time room member updates via globalThis socket.io sharing ([94a1d9b](https://github.com/antialias/soroban-abacus-flashcards/commit/94a1d9b11058bfb4b54a4753e143cf85f215e913)) ## [2.4.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.4...v2.4.5) (2025-10-08) ### Bug Fixes - send all members (not just online) in socket broadcasts ([3fa6cce](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa6cce17a7acd940cf5a9e6433bf6c4b497540c)) ## [2.4.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.3...v2.4.4) (2025-10-08) ### Bug Fixes - correctly access getSocketIO from dynamic import ([30abf33](https://github.com/antialias/soroban-abacus-flashcards/commit/30abf33ee86b36f2a98014e5b017fa8e466a2107)) ## [2.4.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.2...v2.4.3) (2025-10-08) ### Bug Fixes - resolve socket-server import path for Next.js build ([12c3c37](https://github.com/antialias/soroban-abacus-flashcards/commit/12c3c37ff8e1d3df71d72e527c08fa975043c504)) ## [2.4.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.1...v2.4.2) (2025-10-08) ### Bug Fixes - broadcast member join/leave events immediately via API ([ebfc88c](https://github.com/antialias/soroban-abacus-flashcards/commit/ebfc88c5ea0a8a0fdda039fa129e1054b9c42e65)) ## [2.4.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.4.0...v2.4.1) (2025-10-08) ### Bug Fixes - make leave room button actually remove user from room ([49f12f8](https://github.com/antialias/soroban-abacus-flashcards/commit/49f12f8cab631fedd33f1bc09febfdc95e444625)) ## [2.4.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.3.1...v2.4.0) (2025-10-08) ### Features - add arcade room/session info and network players to nav ([6800747](https://github.com/antialias/soroban-abacus-flashcards/commit/6800747f80a29c91ba0311a8330d594c1074097d)) - add real-time WebSocket updates for room membership ([7ebb2be](https://github.com/antialias/soroban-abacus-flashcards/commit/7ebb2be3927762a5fe9b6fb7fb15d6b88abb7b6a)) - implement modal room enforcement (one room per user) ([f005fbb](https://github.com/antialias/soroban-abacus-flashcards/commit/f005fbbb773f4d250b80d71593490976af82d5a5)) - improve room navigation and membership UI ([bc219c2](https://github.com/antialias/soroban-abacus-flashcards/commit/bc219c2ad66707f03e7a6cf587b9d190c736e26d)) ### Bug Fixes - auto-cleanup orphaned arcade sessions without valid rooms ([3c002ab](https://github.com/antialias/soroban-abacus-flashcards/commit/3c002ab29d1b72a0e1ffb70bb0744dc560e7bdc2)) - show correct join/leave button based on room membership ([5751dfe](https://github.com/antialias/soroban-abacus-flashcards/commit/5751dfef5c81981937cd5300c4256e5b74bb7488)) ## [2.3.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.3.0...v2.3.1) (2025-10-07) ### Bug Fixes - 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 optional chaining to stepBeadHighlights access ([a5fac5c](https://github.com/antialias/soroban-abacus-flashcards/commit/a5fac5c75c8cd67b218a5fd5ad98818dad74ab67)) - 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)) - change TypeScript moduleResolution from bundler to node ([327aee0](https://github.com/antialias/soroban-abacus-flashcards/commit/327aee0b4b5c0b0b2bf3eeb48d861bb3068f6127)) - convert Jest mocks to Vitest in useSteamJourney tests ([e067271](https://github.com/antialias/soroban-abacus-flashcards/commit/e06727160c70a1ab38a003104d1fef8fb83ff92d)) - convert player IDs from number to string in arcade tests ([72db1f4](https://github.com/antialias/soroban-abacus-flashcards/commit/72db1f4a2c3f930025cd5ced3fcf7c810dcc569d)) - rewrite layout.nav.test to match actual RootLayout props ([a085de8](https://github.com/antialias/soroban-abacus-flashcards/commit/a085de816fcdeb055addabb8aec391b111cb5f94)) - update useArcadeGuard tests with proper useViewerId mock ([4eb49d1](https://github.com/antialias/soroban-abacus-flashcards/commit/4eb49d1d44e1d85526ef6564f88a8fbcebffb4d2)) - use Object.defineProperty for NODE_ENV in middleware tests ([e73191a](https://github.com/antialias/soroban-abacus-flashcards/commit/e73191a7298dbb6dd15da594267ea6221062c36b)) - wrap Buffer in Uint8Array for Next.js Response API ([98384d2](https://github.com/antialias/soroban-abacus-flashcards/commit/98384d264e4a10d1836aa9f2e69151b122ffa7b0)) ### Documentation - add explicit package.json script references to regime docs ([3353bca](https://github.com/antialias/soroban-abacus-flashcards/commit/3353bcadc2849104248c624973274ed90b86722a)) - establish mandatory code quality regime for Claude Code ([dd11043](https://github.com/antialias/soroban-abacus-flashcards/commit/dd1104310f4e0e85640730ea0e96e4adda4bc505)) - expand quality regime to define "done" for all work ([f92f7b5](https://github.com/antialias/soroban-abacus-flashcards/commit/f92f7b592af38ba9d0f5b1db3a061d63d92a5093)) ## [2.3.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.2.1...v2.3.0) (2025-10-07) ### Features - add Biome + ESLint linting setup ([fc1838f](https://github.com/antialias/soroban-abacus-flashcards/commit/fc1838f4f53a4f8d8f1c5303de3a63f12d9c9303)) ### Styles - apply Biome formatting to entire codebase ([60d70cd](https://github.com/antialias/soroban-abacus-flashcards/commit/60d70cd2f2f2b1d250c4c645889af4334968cb7e)) ## [2.2.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.2.0...v2.2.1) (2025-10-07) ### Bug Fixes - remove remaining typst-dependent files ([d1b9b72](https://github.com/antialias/soroban-abacus-flashcards/commit/d1b9b72cfc2f2ba36c40d7ae54bc6fdfcc5f34da)) ## [2.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.1.3...v2.2.0) (2025-10-07) ### Features - remove typst-related code and routes ([be6fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/be6fb1a881b983f9830d36c079b7b41f35153b8a)) ## [2.1.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.1.2...v2.1.3) (2025-10-07) ### Bug Fixes - remove .npmrc from Dockerfile COPY ([e71c2b4](https://github.com/antialias/soroban-abacus-flashcards/commit/e71c2b4da85076dfc97401fc170cd88cb0aa4375)) ## [2.1.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.1.1...v2.1.2) (2025-10-07) ### Bug Fixes - revert to default pnpm mode for Docker compatibility ([bd0092e](https://github.com/antialias/soroban-abacus-flashcards/commit/bd0092e69ac4f74ea89b8d31399cf72f57484cbb)) ## [2.1.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.1.0...v2.1.1) (2025-10-07) ### Bug Fixes - ignore all node_modules in Docker ([4792dde](https://github.com/antialias/soroban-abacus-flashcards/commit/4792dde1beef9c6cb84a27bc6bb6acfa43919a72)) ## [2.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.7...v2.1.0) (2025-10-07) ### Features - remove typst dependencies ([eedce28](https://github.com/antialias/soroban-abacus-flashcards/commit/eedce28572035897001f6b8a08f79beaa2360d44)) ## [2.0.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.6...v2.0.7) (2025-10-07) ### Bug Fixes - preserve workspace node_modules in Docker for hoisted mode ([4f8aaf0](https://github.com/antialias/soroban-abacus-flashcards/commit/4f8aaf04aadda11ce9ec470dec44f78062929e77)) ## [2.0.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.5...v2.0.6) (2025-10-07) ### Bug Fixes - ignore nested node_modules in Docker ([f554592](https://github.com/antialias/soroban-abacus-flashcards/commit/f554592272c2e92d7f1ec6550211518de9c3242f)) ## [2.0.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.4...v2.0.5) (2025-10-07) ### Bug Fixes - use .npmrc in Docker for hoisted mode consistency ([2df8cdc](https://github.com/antialias/soroban-abacus-flashcards/commit/2df8cdc88ed03b6b04642a3441e17c6fda11d2a5)) ## [2.0.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.3...v2.0.4) (2025-10-07) ### Bug Fixes - remove .npmrc in Docker to avoid hoisted mode issues ([2a77d75](https://github.com/antialias/soroban-abacus-flashcards/commit/2a77d755b7820b5b6b52ea99db418e6d071d726e)) ## [2.0.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.2...v2.0.3) (2025-10-07) ### Bug Fixes - remove duplicate PlayerStatusBar story file from arcade ([4e721f7](https://github.com/antialias/soroban-abacus-flashcards/commit/4e721f765a29fe8628d4e34ef94cdf5728eea3dc)) ## [2.0.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.1...v2.0.2) (2025-10-07) ### Bug Fixes - update Dockerfile pnpm version and fix TypeScript config ([43077a8](https://github.com/antialias/soroban-abacus-flashcards/commit/43077a80e271a793c88f100874914ae6f3c515b5)) ## [2.0.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v2.0.0...v2.0.1) (2025-10-07) ### Bug Fixes - add @types/minimatch to abacus-react devDependencies ([fa45475](https://github.com/antialias/soroban-abacus-flashcards/commit/fa4547543dcd0cddc7cc9ff9da62f60a4717fb1f)) ## [2.0.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.2.1...v2.0.0) (2025-10-07) ### ⚠ BREAKING CHANGES - abacus-react package now has independent versioning from monorepo ### 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:** update description to mention GitHub Packages support ([af77256](https://github.com/antialias/soroban-abacus-flashcards/commit/af7725622e15801f9e56af12930c4e14c5e67c53)) - **abacus-react:** use environment variables to override npm registry ([ad444e1](https://github.com/antialias/soroban-abacus-flashcards/commit/ad444e108f76d3014e492ddc94de0e52c61743ea)) - 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 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 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 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 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 consecutive match tracking system for escalating celebrations ([111c0ce](https://github.com/antialias/soroban-abacus-flashcards/commit/111c0ced715be7cade006387d01f4e2f52c59be9)) - add CSS animations and visual feedback system ([80e33e2](https://github.com/antialias/soroban-abacus-flashcards/commit/80e33e25b3d30a44a1a5294997d56949e2aeef8b)) - add deployment info modal with keyboard shortcut ([43be7ac](https://github.com/antialias/soroban-abacus-flashcards/commit/43be7ac83a9ba3e0ad970f4588729ba2ad394702)) - add direct URL routes for each game mode ([a08f053](https://github.com/antialias/soroban-abacus-flashcards/commit/a08f0535bf6dfb424e8f9764b37ce6912db6021c)) - 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 initialStyle prop to ComplementRaceProvider ([f3bc2f6](https://github.com/antialias/soroban-abacus-flashcards/commit/f3bc2f6d926b9c8d9229636e3ed688bf9ea3baf3)) - add intelligent on-screen number pad for devices without keyboards ([d4740ff](https://github.com/antialias/soroban-abacus-flashcards/commit/d4740ff99709be915c41f51d973706f6ff2774b3)) - 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 middleware for pathname header support in [@nav](https://github.com/nav) fallback ([b7e7c4b](https://github.com/antialias/soroban-abacus-flashcards/commit/b7e7c4beff1e37e90e9e20a890c5af7a134a7fca)) - add mini app nav to arcade page ([a854fe3](https://github.com/antialias/soroban-abacus-flashcards/commit/a854fe3dc935b10db8dc71569c0c8abd81938e4c)) - add optimistic updates and remove dead code ([b62cf26](https://github.com/antialias/soroban-abacus-flashcards/commit/b62cf26fb6597bae9a590f8b8d630fd31a8dd321)) - add passenger boarding system with station-based pickup ([23a9016](https://github.com/antialias/soroban-abacus-flashcards/commit/23a9016245e061b65151735db31aebdc9d36ed1d)) - add player types and migration utilities ([79f44b2](https://github.com/antialias/soroban-abacus-flashcards/commit/79f44b25d6c17f119c3ae225fb449be27c77c56d)) - add PlayerStatusBar with escalating celebration animations ([7f8c90a](https://github.com/antialias/soroban-abacus-flashcards/commit/7f8c90acea84b208df0e3e23e80a02cf425c0950)) - add prominent game context display to mini nav with smooth transitions ([8792393](https://github.com/antialias/soroban-abacus-flashcards/commit/8792393956b01a5a8ca67d78209e6defb6a11903)) - add React Query setup with api helper ([a3878a8](https://github.com/antialias/soroban-abacus-flashcards/commit/a3878a8537fe123fa345d2d2990b3cd76132ba1e)) - add realistic mountains with peaks and ground terrain ([99cdfa8](https://github.com/antialias/soroban-abacus-flashcards/commit/99cdfa8a0ba63e7b523466d8b2108bca05b0310a)) - 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)) - add smooth spring animations to pressure gauge ([863a2e1](https://github.com/antialias/soroban-abacus-flashcards/commit/863a2e1319448381c853540301886fb4a169e112)) - add sound settings support to AbacusReact component ([90b9ffa](https://github.com/antialias/soroban-abacus-flashcards/commit/90b9ffa0d8659891bfe8062217e45245bbff5d5a)) - 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)) - **complement-race:** add abacus displays to pressure gauge ([c5ebc63](https://github.com/antialias/soroban-abacus-flashcards/commit/c5ebc635afb6e78f9f4b1192ff39dcec53879a60)) - complete themed navigation system with game-specific chrome ([0a4bf17](https://github.com/antialias/soroban-abacus-flashcards/commit/0a4bf1765cbd86bf6f67fb3b99c577cfe3cce075)) - 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)) - create StandardGameLayout for perfect viewport sizing ([728a920](https://github.com/antialias/soroban-abacus-flashcards/commit/728a92076a6ac9ef71f0c75d2e9503575881130a)) - display passengers visually on train and at stations ([1599904](https://github.com/antialias/soroban-abacus-flashcards/commit/159990489fec9162d9ed9ecf77c7592b776bbb23)) - dynamic player card rendering on games page ([81d17f2](https://github.com/antialias/soroban-abacus-flashcards/commit/81d17f23976cc340e23c63f8e27f1a15afd1a4d0)) - dynamically calculate train cars based on max concurrent passengers ([9ea1553](https://github.com/antialias/soroban-abacus-flashcards/commit/9ea15535d18efc25739342b0945c6d7ec7896c5d)) - emit session-state after creating arcade session ([70d6f43](https://github.com/antialias/soroban-abacus-flashcards/commit/70d6f43d6d7ff918ab15edb6e27d4eab8c7a3de6)) - 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 [@nav](https://github.com/nav) parallel routes for game name display in mini navigation ([885fc72](https://github.com/antialias/soroban-abacus-flashcards/commit/885fc725dc0bb41bbb5e500c2c907c6182192854)) - implement cozy sound effects for abacus with variable intensity ([c95be1d](https://github.com/antialias/soroban-abacus-flashcards/commit/c95be1df6dbe74aad08b9a1feb1f33688212be0b)) - implement cozy sound effects for abacus with variable intensity ([cea5fad](https://github.com/antialias/soroban-abacus-flashcards/commit/cea5fadbe4b4d5ae9e0ee988e9b1c4db09f21ba6)) - implement game control callbacks in MemoryPairsGame ([4758ad2](https://github.com/antialias/soroban-abacus-flashcards/commit/4758ad2f266ef3f3f67c22533fbb5f475dd8bd5b)) - implement game theming system with context-based navigation chrome ([3fa11c4](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa11c4fbcbeabeb3bdd0db38374fb9a13cbb754)) - implement innovative dynamic two-panel layout for on-screen keyboard ([4bb8f6d](https://github.com/antialias/soroban-abacus-flashcards/commit/4bb8f6daf1f3eecb5cbaf31bf4057f43e43aeb07)) - implement mobile-first responsive design for speed memory quiz ([13efc4d](https://github.com/antialias/soroban-abacus-flashcards/commit/13efc4d0705bb9e71a2002689a4ebac109caacc2)) - implement simple fixed bottom keyboard bar ([9ef72d7](https://github.com/antialias/soroban-abacus-flashcards/commit/9ef72d7e88a6a9b30cfd7a7d3944197cc1e0037a)) - implement smooth train exit with fade-out through right tunnel ([0176694](https://github.com/antialias/soroban-abacus-flashcards/commit/01766944f0267b1f2adeb6a30c9f89d48038a7f8)) - implement toggleable on-screen keyboard to prevent UI overlap ([701d23c](https://github.com/antialias/soroban-abacus-flashcards/commit/701d23c36992b09c075e1a394f8a72edffb919f9)) - 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 GameControlButtons into navigation ([fbd8cd4](https://github.com/antialias/soroban-abacus-flashcards/commit/fbd8cd4a6bca44bbc0f7c4e8153900558805a84a)) - 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)) - integrate user profiles with PlayerStatusBar and game results ([beff646](https://github.com/antialias/soroban-abacus-flashcards/commit/beff64652c72a5cd0c008891b6dc2f5167e28b62)) - 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)) - 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)) - 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)) - set up automated npm publishing for @soroban/abacus-react package ([dd80d29](https://github.com/antialias/soroban-abacus-flashcards/commit/dd80d29c979e20b4d3624cf66be79ec51d5f53a9)) - set up Drizzle ORM with SQLite database ([5d5afd4](https://github.com/antialias/soroban-abacus-flashcards/commit/5d5afd4e6860241ff45c7173d4aad2b7156a41b1)) - 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)) - update nav components for UUID players ([e85d041](https://github.com/antialias/soroban-abacus-flashcards/commit/e85d0415f23049da861533bbec2a65e1d84adfe1)) - 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)) ### 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)) - **abacus-react:** apply global columnPosts styling and fix reckoning bar width ([bb9959f](https://github.com/antialias/soroban-abacus-flashcards/commit/bb9959f7fb8985e0c6496247306838d97e7121f7)) - **abacus-react:** force npm to use GitHub Packages registry ([5e6c901](https://github.com/antialias/soroban-abacus-flashcards/commit/5e6c901f73a68b60ec05f19c4a991ca8affc1589)) - **abacus-react:** improve publishing workflow with better version sync ([7a4ecd2](https://github.com/antialias/soroban-abacus-flashcards/commit/7a4ecd2b5970ed8b6bfde8938b36917f8e7a7176)) - **abacus-react:** improve workspace dependency cleanup and add validation ([11fd6f9](https://github.com/antialias/soroban-abacus-flashcards/commit/11fd6f9b3deb1122d3788a7e0698de891eeb0f3a)) - **abacus-react:** resolve workspace dependencies before npm publish ([834b062](https://github.com/antialias/soroban-abacus-flashcards/commit/834b062b2d22356b9d96bb9c3c444eccaa51d793)) - **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 CLEAR_MISMATCH move to allow mismatch feedback to auto-dismiss ([158f527](https://github.com/antialias/soroban-abacus-flashcards/commit/158f52773d20dfab7dc55575d9999f32b4c589a2)) - add missing GameThemeContext file for themed navigation ([d4fbdd1](https://github.com/antialias/soroban-abacus-flashcards/commit/d4fbdd14630e2f2fcdbc0de23ccc4ccd9eb74b48)) - add npmrc for hoisting and fix template paths ([5c65ac5](https://github.com/antialias/soroban-abacus-flashcards/commit/5c65ac5caabb7197f069344d0ed29d02c3de2b9a)) - add Python setuptools and build tools for better-sqlite3 compilation ([a216a3d](https://github.com/antialias/soroban-abacus-flashcards/commit/a216a3d3435a132c8add0a7c711b021bf4b1555f)) - add testing mode for on-screen keyboard and fix toggle functionality ([904074c](https://github.com/antialias/soroban-abacus-flashcards/commit/904074ca821b62cd6b1e129354eb36c5dd4b5e7f)) - 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)) - allow navigation to game setup pages without active session ([c7ad3c0](https://github.com/antialias/soroban-abacus-flashcards/commit/c7ad3c069502580d1e72e7cc01e7b1f793ba9357)) - 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)) - **complement-race:** improve abacus display in equations ([491b299](https://github.com/antialias/soroban-abacus-flashcards/commit/491b299e28ee82c49069cf892609b1b2b3c0aee3)) - **complement-race:** prevent passengers being left behind at delivery stations ([e6ebecb](https://github.com/antialias/soroban-abacus-flashcards/commit/e6ebecb09b1e5dd78c2dc11e125399082fb420ab)) - 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)) - disable turn validation in arcade mode matching game ([7c0e6b1](https://github.com/antialias/soroban-abacus-flashcards/commit/7c0e6b142b90f0fc3d444b3dcc1fff1512a0a3b2)) - eliminate rail jaggies on sharp curves by increasing sampling density ([46d4af2](https://github.com/antialias/soroban-abacus-flashcards/commit/46d4af2bdad761366890171cc666ba24d5309257)) - enable shamefully-hoist for semantic-release dependencies ([6168c29](https://github.com/antialias/soroban-abacus-flashcards/commit/6168c292d5f15748e80610103a6a787c0cf29d0f)) - enforce playerId must be explicitly provided in arcade moves ([d5a8a2a](https://github.com/antialias/soroban-abacus-flashcards/commit/d5a8a2a14cb14ecd00827ddc96873f3db79573fd)) - ensure consistent r×c grid layout for memory matching game ([f1a0633](https://github.com/antialias/soroban-abacus-flashcards/commit/f1a0633596fd1bb53418e56e28f3f27d3fce8b54)) - ensure game names persist in navigation on page reload ([9191b12](https://github.com/antialias/soroban-abacus-flashcards/commit/9191b124934b9a5577a91f67e8fb6f83b173cc4f)) - ensure passengers only travel forward on train route ([8ad3144](https://github.com/antialias/soroban-abacus-flashcards/commit/8ad3144d2da9b4ceedd62a9f379f664fa9381afe)) - export missing hooks and types from @soroban/abacus-react package ([423ba55](https://github.com/antialias/soroban-abacus-flashcards/commit/423ba5535023928f1e0198b2bd01c3c6cf7ee848)) - 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)) - increase question display zIndex to stay above terrain ([8c8b8e0](https://github.com/antialias/soroban-abacus-flashcards/commit/8c8b8e08b4d51e6462d4b7dd258a25e64bf16dba)) - lazy-load database connection to prevent build-time access ([af8d993](https://github.com/antialias/soroban-abacus-flashcards/commit/af8d9936285c697ff45700115eba83b5debdf9ad)) - make results screen compact to fit viewport without scrolling ([9d4cba0](https://github.com/antialias/soroban-abacus-flashcards/commit/9d4cba05be84e7c162d706c8697eede23314b1a4)) - migrate viewport from metadata to separate viewport export ([1fe12c4](https://github.com/antialias/soroban-abacus-flashcards/commit/1fe12c4837b1229d0f0ab93c55d0ffb504eb8721)) - move auth.ts to src/ to match @/ path alias ([7829d8a](https://github.com/antialias/soroban-abacus-flashcards/commit/7829d8a0fb86dac07aa1b2fb0b68908e7e8381b8)) - 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)) - pass player IDs (not user IDs) in all arcade game moves ([d00abd2](https://github.com/antialias/soroban-abacus-flashcards/commit/d00abd25e755c0304517a7953cb78022a073b7c3)) - 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)) - redesign matching game setup page for StandardGameLayout ([cc1f27f](https://github.com/antialias/soroban-abacus-flashcards/commit/cc1f27f0f82256f9344531814e8b965fa547d555)) - reduce landmark size from 4.0x to 2.0x multiplier ([c928e90](https://github.com/antialias/soroban-abacus-flashcards/commit/c928e907854e18264266958d813d4e1d4c03e760)) - 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 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 frozen lockfile flag from publishing workflow to resolve dependency installation issues ([18af973](https://github.com/antialias/soroban-abacus-flashcards/commit/18af9730ffbcd822da292161815ffd09ad97f66c)) - 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)) - reposition on-screen keyboard to avoid covering abacus tiles ([6e5b4ec](https://github.com/antialias/soroban-abacus-flashcards/commit/6e5b4ec7bf7e2af5f724628693d3c4ee8c5b3968)) - require activePlayers in START_GAME, never fallback to userId ([ea1b1a2](https://github.com/antialias/soroban-abacus-flashcards/commit/ea1b1a2f69a35a6a27f7f952971509b2bb2e6f8d)) - reset momentum and pressure when starting new route ([3ea88d7](https://github.com/antialias/soroban-abacus-flashcards/commit/3ea88d7a5a6ed427b17cf408d993918870b75f7f)) - resolve circular dependency errors in memory quiz on-screen keyboard ([d25e2c4](https://github.com/antialias/soroban-abacus-flashcards/commit/d25e2c4c006b54a51eaa3a93fa8462e3a06221b7)) - resolve JSX parsing error with emoji in guide page ([bf046c9](https://github.com/antialias/soroban-abacus-flashcards/commit/bf046c999b51ba422284a139ebadde2c35187ac7)) - resolve mini navigation game name persistence across all routes ([3fa314a](https://github.com/antialias/soroban-abacus-flashcards/commit/3fa314aaa5de7b9c26a5390a52996c7d5ef9ea51)) - resolve runtime error - calculateOptimalGrid not defined ([fbc84fe](https://github.com/antialias/soroban-abacus-flashcards/commit/fbc84febda5507d434cf60aa0fce32350e01ec96)) - resolve SSR/client hydration mismatch for themed navigation ([301e65d](https://github.com/antialias/soroban-abacus-flashcards/commit/301e65dfa66d0de6b6efbbfbd09b717308ab57f1)) - 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)) - show "Return to Arcade" button only during active game ([4153929](https://github.com/antialias/soroban-abacus-flashcards/commit/4153929a2ab199836249d53d92c1be4979782b73)) - 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)) - 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 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)) - 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 race track components for new player system ([ae4e8fc](https://github.com/antialias/soroban-abacus-flashcards/commit/ae4e8fcb5a62c07fb9ffa9a70c07e45ca8be88c8)) - update tutorial tests to use consolidated AbacusDisplayProvider ([899fc69](https://github.com/antialias/soroban-abacus-flashcards/commit/899fc6975f1fa14ddb42b2ead03524c9389e7c38)) - update workflow to support Personal Access Token for GitHub Packages publishing auth ([ae4b71b](https://github.com/antialias/soroban-abacus-flashcards/commit/ae4b71b98655364887a729ef9d2b67b6a753d6e9)) - upgrade CI dependencies and fix deprecated actions ([6a51c1e](https://github.com/antialias/soroban-abacus-flashcards/commit/6a51c1e9bdc299d86b8001eba35f930fe16cd60c)) - use displayPassengers for station rendering in RailroadTrackPath ([a9e0d19](https://github.com/antialias/soroban-abacus-flashcards/commit/a9e0d197348377cb66581150df47d2d1127ad09a)) - use node-linker=hoisted for full dependency hoisting ([d3b2e0b](https://github.com/antialias/soroban-abacus-flashcards/commit/d3b2e0b2e152150886110edd80dfe43f70df63d9)) - use player IDs instead of array indices in matching game ([ccd0d6d](https://github.com/antialias/soroban-abacus-flashcards/commit/ccd0d6d94ccd1cc25eed602d32a9cf884bda2ee6)) - use style fontSize instead of attribute for landmarks ([ebc6894](https://github.com/antialias/soroban-abacus-flashcards/commit/ebc6894746d1d490c3a5cae19c38bb86fe8fdc65)) - use UUID player IDs in session creation fallback ([22541df](https://github.com/antialias/soroban-abacus-flashcards/commit/22541df99f049ce99e020e12c2d28b33434de51d)) - wrap animated pressure value in animated.span to prevent React error ([5c5954b](https://github.com/antialias/soroban-abacus-flashcards/commit/5c5954be74708fb7019802a6dd80b10e9b2c1d6a)) ### Performance Improvements - optimize React rendering with memoization and consolidated effects ([93cb070](https://github.com/antialias/soroban-abacus-flashcards/commit/93cb070ca503effa05541f7ed217bb4260359581)) ### Code Refactoring - completely remove [@nav](https://github.com/nav) parallel routes and simplify navigation ([54ff20c](https://github.com/antialias/soroban-abacus-flashcards/commit/54ff20c7555e028b50471ac83a7030921c76f43b)) - consolidate abacus display context management ([a387b03](https://github.com/antialias/soroban-abacus-flashcards/commit/a387b030fa9fe36f2c8c0e65e34ec9ee872a7afa)) - extract ActivePlayersList component from PageWithNav ([2849576](https://github.com/antialias/soroban-abacus-flashcards/commit/28495767a9b792e6f8b9cc9f4df85e1b27a15c35)) - extract AddPlayerButton component from PageWithNav ([57a72e3](https://github.com/antialias/soroban-abacus-flashcards/commit/57a72e34a5df198ac795ff83cb6bfc6fb8a2f27e)) - extract FullscreenPlayerSelection component from PageWithNav ([66f5223](https://github.com/antialias/soroban-abacus-flashcards/commit/66f52234e12594947069c4ffed3648ce034c3e79)) - extract GameContextNav orchestration component ([e3f552d](https://github.com/antialias/soroban-abacus-flashcards/commit/e3f552d8f588b25d13eca20fbcd4f43b30de917f)) - extract GameHUD component from SteamTrainJourney ([78d5234](https://github.com/antialias/soroban-abacus-flashcards/commit/78d5234a79eb5293ae8eb279fb46b5aa2bbb6ae7)) - extract GameModeIndicator component from PageWithNav ([d67315f](https://github.com/antialias/soroban-abacus-flashcards/commit/d67315f771a3f660be58495c1236f74b49001d23)) - extract guide components to fix syntax error in large file ([c77e880](https://github.com/antialias/soroban-abacus-flashcards/commit/c77e880be32456c1e91d37358d85c445b2f707df)) - extract RailroadTrackPath component from SteamTrainJourney ([d9acc0e](https://github.com/antialias/soroban-abacus-flashcards/commit/d9acc0efea397ce58013160efbb2ed4fbee244b2)) - extract TrainAndCars component from SteamTrainJourney ([5ae22e4](https://github.com/antialias/soroban-abacus-flashcards/commit/5ae22e4645614bc67e7dece509d92bdd85250e28)) - extract TrainTerrainBackground component from SteamTrainJourney ([05bb035](https://github.com/antialias/soroban-abacus-flashcards/commit/05bb035db5483892f101cef0971bf08575cb041b)) - extract usePassengerAnimations hook from SteamTrainJourney ([32abde1](https://github.com/antialias/soroban-abacus-flashcards/commit/32abde107ca050bfc191a325d0bf074d53df33fc)) - extract useTrackManagement hook from SteamTrainJourney ([a1f2b97](https://github.com/antialias/soroban-abacus-flashcards/commit/a1f2b9736a0ff087dae44110708254e6da966b79)) - extract useTrainTransforms hook from SteamTrainJourney ([a2512d5](https://github.com/antialias/soroban-abacus-flashcards/commit/a2512d573823e187aad08f3fed365c4211023bb3)) - make game mode a computed property from active player count ([386c88a](https://github.com/antialias/soroban-abacus-flashcards/commit/386c88a3c03eb6de7814f65a6556a2d0ab50386b)) - remove drag-and-drop UI from EnhancedChampionArena ([982fa45](https://github.com/antialias/soroban-abacus-flashcards/commit/982fa45c08b34fdb64ec0835bc591b850e1c1373)) - remove duplicate game control buttons from game phases ([9165014](https://github.com/antialias/soroban-abacus-flashcards/commit/9165014997ccf6f4859646709d7e800933b4868e)) - remove redundant game titles from game screens ([402724c](https://github.com/antialias/soroban-abacus-flashcards/commit/402724c80e1776b90be1fc02186813389560f380)) - replace bulky MemoryGrid stats with compact progress display ([c4d6691](https://github.com/antialias/soroban-abacus-flashcards/commit/c4d6691715d09066661be4a0af7e917c6217ed8c)) - simplify navigation flow and enhance GameControls UI ([920aaa6](https://github.com/antialias/soroban-abacus-flashcards/commit/920aaa639887b42dcb225cb42ce146e67d29a98e)) - simplify PageWithNav by extracting nav components ([98cfa56](https://github.com/antialias/soroban-abacus-flashcards/commit/98cfa5645bc21faaeffa676d205bdbdf604eb488)) - split deployment info into server/client components ([5e7b273](https://github.com/antialias/soroban-abacus-flashcards/commit/5e7b273b339cd11d7b4b55dd50a1bf6c823b41d5)) - streamline GamePhase header and integrate PlayerStatusBar ([dcefa74](https://github.com/antialias/soroban-abacus-flashcards/commit/dcefa74902c65618f79eda32c94a5b8736b15b55)) - streamline UI and remove duplicate information displays ([7a3e34b](https://github.com/antialias/soroban-abacus-flashcards/commit/7a3e34b4faab62c069e6698a935ad66ee80037d2)) ### Documentation - add comprehensive workflow documentation for automated npm publishing ([f923b53](https://github.com/antialias/soroban-abacus-flashcards/commit/f923b53a44c2875fe152c9bd326d6a427d07a71e)) - add server persistence migration plan ([dd0df8c](https://github.com/antialias/soroban-abacus-flashcards/commit/dd0df8c274f513947e43f014b9086f77077f0196)) ### Tests - add comprehensive unit tests for refactored hooks and components ([5d20839](https://github.com/antialias/soroban-abacus-flashcards/commit/5d2083903e9eb751d810921e06dc51b7137f726f)) - add E2E tests for arcade modal session behavior ([619be98](https://github.com/antialias/soroban-abacus-flashcards/commit/619be9859c548b6c3f0af45379a61f690bcb8e13)) ## [1.2.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.2.0...v1.2.1) (2025-09-28) ### Bug Fixes - update GitHub Pages actions to v4 for better deployment reliability ([be76c23](https://github.com/antialias/soroban-abacus-flashcards/commit/be76c2355fbefd924890baad50b6e873a4e435f2)) # [1.2.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.1.3...v1.2.0) (2025-09-28) ### Features - trigger storybook deployment after enabling GitHub Pages ([64dc94e](https://github.com/antialias/soroban-abacus-flashcards/commit/64dc94e91e089fadbdb75fbbf3a6164a2d224ef4)) ## [1.1.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.1.2...v1.1.3) (2025-09-28) ### Bug Fixes - add cssgen step to generate styles.css for Storybook ([26077de](https://github.com/antialias/soroban-abacus-flashcards/commit/26077de78bccf8549e1e9a0ac9c08742c61c8d28)) ## [1.1.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.1.1...v1.1.2) (2025-09-28) ### Bug Fixes - upgrade Node.js to version 20 for Storybook compatibility ([4c33872](https://github.com/antialias/soroban-abacus-flashcards/commit/4c338726c13af623b1536f75fe6a18e0ab529377)) ## [1.1.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.1.0...v1.1.1) (2025-09-28) ### Bug Fixes - update GitHub Actions to use latest action versions for Storybook deployment ([f0bb411](https://github.com/antialias/soroban-abacus-flashcards/commit/f0bb411573c8496d11d560fa7efe9324015412b2)) # [1.1.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v1.0.0...v1.1.0) (2025-09-28) ### Features - add GitHub Pages Storybook deployment with dual documentation sites ([439707b](https://github.com/antialias/soroban-abacus-flashcards/commit/439707b1188e9750fb2c62aac05d54fede196417)) # 1.0.0 (2025-09-28) ### Bug Fixes - 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)) - 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)) - 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 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 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 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)) - 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 - 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 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 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 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 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 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)) - 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)) # Semantic Release