chore(abacus-react): release v2.15.0 [skip ci]
# [2.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.14.0...abacus-react-v2.15.0) (2025-12-08) ### Bug Fixes * **404:** reset easter egg config on page reload/close ([d6f1c13](d6f1c13317)) * account for SVG preserveAspectRatio in coordinate transforms ([e4e0925](e4e09256c2)) * add 'auto' to RuleMode type to prevent undefined display values ([a8636ca](a8636ca6a2)) * add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](a65feb7344)) * add cooldown after quick-escape to prevent precision mode re-activation ([e885ae7](e885ae7ef4)) * add currentStepEstimate to required fields in JSON schema ([0d66c54](0d66c54991)) * add custom cursor when pointer lock is active ([5d6d6b4](5d6d6b4ddc)) * add missing openDeploymentInfo prop to MinimalNav ([30879d8](30879d8959)) * add missing scaleX and scaleY number conversions ([ae6cc5e](ae6cc5e326)) * add missing selectedContinent to default config and fix ts-expect-error directives ([07e9224](07e92240e8)) * add mode descriptions and remove double borders ([6f2f6d4](6f2f6d444c)) * add quotes around unquoted keys when parsing customCrops.ts ([0add49c](0add49c599)) * add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](1782f427f1)) * add shuffling to progressive difficulty mode & UI improvements ([38e9982](38e9982c3d)) * add zoom to selected continent and improve click detection ([6651979](6651979ea0)) * align share persistence with user session logic ([72c72fc](72c72fc218)) * calculate total problems correctly in preview API ([25dfb71](25dfb71b3e)) * cancel previous give-up animation when new give-up starts ([c01cb7f](c01cb7f384)) * cap zoom when releasing pointer lock (escape key) ([2331f10](2331f1038c)) * center crosshairs and re-enable pointer lock after escape ([814bf94](814bf949f2)) * change zoom capping to create pause effect instead of slow easing ([f2ca9d1](f2ca9d1ebe)) * combine fast easing with smooth precision mode transition ([cab1fbf](cab1fbff95)) * configure Next.js to transpile [@svg-maps](https://github.com/svg-maps) ES modules ([ebf2b66](ebf2b66910)) * consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](0f3ec369bf)) * correct GPT-5 API parameters and surface actual grading errors ([2d33f35](2d33f35c4d)) * **create:** use inline styles for dynamic gradient backgrounds ([ed25b32](ed25b323e8)) * DevCropTool key quoting and magnifier label positioning ([2e4f22a](2e4f22a522)) * don't show labels for excluded/filtered regions ([a83fbb1](a83fbb1070)) * eagerly load map caches in browser and use Suspense pattern ([db6be73](db6be73a1c)) * eliminate cursor dampening lag when changing direction ([fc08b77](fc08b775db)) * enable page virtualization in worksheet creator ([b675f6c](b675f6c96e)) * enable vertical scrolling in layout controls ([a1b31f4](a1b31f454a)) * enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](f409e3c2ed)) * ensure entire region path is clickable with pointerEvents: all ([eb94191](eb94191b2e)) * export worksheet schema tables from index ([6a16674](6a1667404f)) * hide abacus on /arcade and /arcade-rooms routes ([77033f0](77033f0b22)) * implement manual click detection using precise cursor position ([156f63f](156f63faaf)) * improve dark mode contrast in OrientationPanel dropdown ([f9e2343](f9e2343ffb)) * improve dark mode for orientation and page buttons ([fe9b9f9](fe9b9f9ffa)) * improve draggable button constraints to avoid action button overlap ([00b0fb2](00b0fb297b)) * improve magnifier zoom calculation for multi-piece regions ([cb4114f](cb4114f344)) * improve magnifier zoom smoothness and debug panel ([639e662](639e662d76)) * improve socket server error messages for better debugging ([5d1ea7d](5d1ea7db2d)) * improve text contrast for selected dropdown items in dark mode ([8d03452](8d0345287f)) * improve zoom easing to threshold by deferring capping ([b355a3f](b355a3fc8f)) * increase sampling density for tiny region detection and show all detected regions ([2c9f760](2c9f760ae9)) * increase super zoom multiplier from 2.5x to 5.0x for Gibraltar ([138e6c0](138e6c071b)) * increase z-index of pointer lock prompt overlay ([5388441](5388441ebb)) * **know-your-world:** actually change magnifier element dimensions to 1/3 ([31a06d6](31a06d6fef)) * **know-your-world:** allow space in name confirmation input ([285b128](285b128bb8)) * **know-your-world:** center setup settings panel horizontally ([5f69fab](5f69fab859)) * **know-your-world:** correctly identify local player for cursor sharing ([7aafe8c](7aafe8c92e)) * **know-your-world:** enable hot/cold only for current player in turn mode ([f5ce53e](f5ce53efc0)) * **know-your-world:** fix celebration timer restart and mobile magnifier dismissal bugs ([0558132](055813205a)) * **know-your-world:** fix hot/cold visual feedback delay ([a6352ec](a6352ec624)) * **know-your-world:** fix pointer lock escape for all edges and add smooth release animation ([a7fa858](a7fa858a29)) * **know-your-world:** fix server/client filter mismatch for USA map ([98e74ba](98e74bae3a)) * **know-your-world:** fix TypeScript build errors ([f622bfa](f622bfab54)) * **know-your-world:** guard against undefined state during session init ([ea8965b](ea8965bc95)) * **know-your-world:** improve crosshair UX and fix mobile Select button ([0584863](0584863bdd)) * **know-your-world:** improve mobile layout for setup screen ([81b44a6](81b44a6422)) * **know-your-world:** improve mobile magnifier positioning and sizing ([9a254e2](9a254e2933)) * **know-your-world:** improve mobile magnifier touch controls ([aee5f21](aee5f21ecc)) * **know-your-world:** make game settings visible in right panel ([11d2d56](11d2d5693c)) * **know-your-world:** move Start button to top-right settings panel ([cc51de3](cc51de35e3)) * **know-your-world:** normalize accented letters for keyboard input ([b27856e](b27856e9fc)) * **know-your-world:** prevent hint bubble closing when toggling settings ([a67c11a](a67c11ae04)) * **know-your-world:** raise auto-zoom thresholds for tiny regions ([17c113e](17c113e68b)) * **know-your-world:** reduce magnifier size to 1/3 of pane dimensions ([61a438d](61a438dd31)) * **know-your-world:** remove confidence gate from hot/cold visual emoji ([7f6b9dd](7f6b9dd558)) * **know-your-world:** remove hovered region label from setup screen ([5bb2288](5bb228883d)) * **know-your-world:** Remove redundant preventDefault calls in touch handlers ([021a75f](021a75f583)) * **know-your-world:** remove tips section from setup screen ([c9e9190](c9e9190937)) * **know-your-world:** replace react-spring with CSS animation for crosshair rotation ([af5e7b5](af5e7b59dc)) * **know-your-world:** restore no-music celebration sounds ([f6d1295](f6d1295c6f)) * **know-your-world:** restore Start button character ([7013a7b](7013a7b068)) * **know-your-world:** stabilize mobile magnifier 1:1 touch tracking ([ab30add](ab30adda25)) * **know-your-world:** suppress hot/cold hints during takeover and give-up ([9f6b425](9f6b425daf)) * **know-your-world:** use getBBox() for consistent takeover positioning ([f8acc4a](f8acc4aa6a)) * **know-your-world:** use localPlayerId for cursor updates in all modes ([5e8c37b](5e8c37b68e)) * **know-your-world:** use shared MAX_ZOOM constant for mobile magnifier ([e4c35e9](e4c35e9425)) * **know-your-world:** use spring-for-speed pattern for smooth crosshair rotation ([b7fe2af](b7fe2af369)) * **know-your-world:** use viewport-based maxHeight for right panel ([a4f9db6](a4f9db6d3f)) * lazy-load map data in know-your-world validator ([07c25a2](07c25a2296)) * lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](97b214da12)) * make map-renderer fill parent container for fit-crop-with-fill ([18b1476](18b14766b2)) * make placeholder pages match actual page dimensions ([4003c5c](4003c5ceb7)) * make useArcadeSocket work without ArcadeErrorProvider ([01740af](01740afcb7)) * merge duplicate style attributes on magnifier SVG ([3eda493](3eda493051)) * move pointer lock management to MapRenderer ([0ed4d13](0ed4d13db6)) * page indicator not tracking scroll when showing all pages ([3d157e3](3d157e32ed)) * page indicator stuck on page 1 due to stale closure ([952ebc7](952ebc7756)) * pass correct parameter for borrow boxes in subtraction ([00d892a](00d892a05c)) * position debug panel opposite from magnifier ([aa80a73](aa80a73664)) * position shared worksheet banner below app nav ([fb3412c](fb3412c9a5)) * **practice:** add 80px top padding to account for app nav height ([a50b268](a50b268d35)) * **practice:** allow vertical overflow for help overlays ([1ddf9fc](1ddf9fc94f)) * **practice:** prevent decomposition math from wrapping ([52ea3f1](52ea3f10fa)) * **practice:** remove overflow clipping to allow help overlays ([e9b123a](e9b123a7b3)) * **practice:** remove redundant 'already at target' message ([e9ccfb9](e9ccfb9186)) * **practice:** use explicit padding to prevent shorthand override ([4c00d92](4c00d92ccb)) * preserve saved seed on page reload ([64ce64b](64ce64bd35)) * preserve seed and prngAlgorithm in config migrations ([b18c412](b18c412736)) * preserve user's scaffolding settings when changing skills ([1eb04ce](1eb04ce0c4)) * prevent duplicate API calls in React StrictMode ([0d59676](0d59676b38)) * prevent modal closure when clicking tabs in AllSkillsModal ([4746e1f](4746e1f8fe)) * prevent regrouping problems in no-regrouping skills and enable progressive difficulty toggle ([59712e1](59712e1021)) * prevent skill name wrapping in mini cards with single-line ellipsis ([a463d08](a463d088d7)) * prevent zoom jump on precision mode activation by resetting spring target ([33d9f15](33d9f15897)) * prevent zoom jump when activating precision mode ([9cb3c89](9cb3c898ec)) * properly apply dark mode hover states in dropdown ([34553ce](34553cebf7)) * properly cycle through problem sets when exceeding unique problem space ([55d4920](55d4920167)) * properly zoom to selected continent in game phases ([e900e44](e900e4465b)) * reduce font size for mini skill card titles to prevent wrapping ([833b481](833b481ebb)) * refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](5b6db588a2)) * regenerate lockfile to remove big.js dependencies ([05fc5cf](05fc5cfe49)) * remove all scaffolding from final mastery skills ([d7bec42](d7bec423e0)) * remove background rect from main map SVG ([7d3c5c3](7d3c5c304b)) * remove duplicate containerRect declaration ([1a690e0](1a690e00b0)) * remove magnifierSpring.zoom from effect dependencies ([5eb2eed](5eb2eeda32)) * remove mispositioned background rect from magnifier SVG ([5815cbe](5815cbee15)) * remove pages from visible set when they leave viewport ([9757449](9757449e21)) * remove redundant 'Teens minus singles' subtraction skill ([e156e87](e156e870df)) * remove regex lookbehind for Safari compatibility ([4d77f1f](4d77f1ffd3)) * remove unused velocity tracking and fix TypeScript errors ([0195a6d](0195a6dc6d)) * replace deprecated path() with curve() in borrow arrows ([47d149c](47d149ca17)) * replace ES module imports with JSON data files ([fb735be](fb735be014)) * resolve auto zoom freeze and stuck zoom issues ([0aee60d](0aee60d8d1)) * respect borrow boxes display setting regardless of actual borrowing ([1aef0f2](1aef0f292f)) * respect operator-specific scaffolding in mastery+mixed mode ([a6472a2](a6472a231b)) * respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](e708add9f2)) * responsive page indicator and settings summary improvements ([93ddc28](93ddc28a3a)) * resume zoom animation immediately when precision mode activates ([7ba7e03](7ba7e03661)) * resume zoom animation immediately when precision mode activates ([7c1f2e5](7c1f2e54c9)) * resume zoom animation when target drops below threshold ([e73b59d](e73b59d510)) * scaffolding changes now apply in mastery+mixed mode ([510f052](510f052978)) * **server:** lazy-load game validators to avoid ES module errors ([a88bd58](a88bd5844c)) * show hot/cold button on iPad with mouse attached ([1333818](1333818bae)) * skip pointer lock request on unsupported devices (iPad) ([d6eb997](d6eb997445)) * stabilize mini skill card height and fix preview updates ([4a52943](4a5294353e)) * take all measurements inside animation callback for label sync ([2191e07](2191e0732b)) * track both SVG units and screen pixels for zoom and dampening ([d72f309](d72f309bad)) * transform screen coordinates to SVG space for isPointInFill() ([4c933be](4c933be48a)) * transmit hovered region ID with network cursor to avoid hit-testing discrepancies ([6c3f860](6c3f860efc)) * **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](69f759a178)) * update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](0f0c3c65e8)) * update operator-specific display rules in mastery+mixed mode ([4174b6d](4174b6d2e7)) * upgrade to Node.js 20 to resolve ES module import issues ([192de5c](192de5c6b5)) * use ± symbol for mixed operator icon consistently ([2695b50](2695b50abe)) * use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](e255ce2c6f)) * use animated spring for magnifier label positioning ([94d1cdf](94d1cdfcb5)) * use ASCII characters for operator icons to support dark mode ([3bd5c00](3bd5c00d21)) * use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](0dd9e45952)) * use dynamic ES module imports for [@svg-maps](https://github.com/svg-maps) packages in know-your-world ([ab94fd3](ab94fd350f)) * use LAN IP instead of localhost for QR code camera uploads ([00b400a](00b400ae8a)) * use screen pixels for zoom, abandon SVG path parsing ([912dc38](912dc385b3)) * use subtle gray highlights for dropdown in dark mode ([8d6170a](8d6170a8c7)) * use SVG viewBox units instead of screen pixels for zoom ([0dcaabb](0dcaabb8a5)) * use white text for selected dropdown items in dark mode ([e1a7375](e1a73758d6)) * **worksheets:** add backward compatibility for displayRules in SmartModeControls ([b956e2d](b956e2d605)) * **worksheets:** add borrowNotation and borrowingHints to DisplayRules interfaces ([3b908ac](3b908ac453)) * **worksheets:** add borrowNotation and borrowingHints to validation fallback ([3f700af](3f700af643)) * **worksheets:** add mastery mode to Zod schema validation ([003f1d1](003f1d11cc)) * **worksheets:** correct Typst array membership syntax for ten-frames rendering ([14b3594](14b359462f)) * **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](8020ee835e)) * **worksheets:** prevent infinite loop when problem space is empty ([02463df](02463df8e5)) * **worksheets:** render operators last for proper layering ([cdd0de7](cdd0de797f)) * **worksheets:** sync preview and download problem generation ([822ef78](822ef78e58)) * **worksheets:** ten-frames not rendering in mastery mode ([b36df3a](b36df3a40c)) * **worksheets:** validation function was converting mastery mode to manual ([4ad687d](4ad687df73)) ### Features * **abacus-react:** add defaultValue prop for uncontrolled mode ([3ce12c5](3ce12c59fc)) * add 'auto' option for scaffolding to defer to mastery progression ([a945a62](a945a620c4)) * add adaptive zoom magnifier for Know Your World map ([1e8846c](1e8846cdb1)) * add AI-powered worksheet grading with GPT-5 vision ([6e95732](6e9573288f)) * add auto scaffolding mode with visual feedback and override notices ([b62db5a](b62db5a323)) * add auto-submit on correct answer + Newton poem blog post ([2f7cb03](2f7cb03c3f)) * add comprehensive error handling for arcade games ([e8c5256](e8c52561a2)) * add continent filtering to Know Your World game ([7bb03b8](7bb03b8409)) * add custom error boundaries with navigation ([73cc418](73cc4185c3)) * add database schema for custom skills and skill customizations ([906fa63](906fa63f24)) * add debug bounding boxes to magnifier view ([9c7d2fa](9c7d2fab5f)) * add debug indicator for custom crop region (dev only) ([9c89aad](9c89aadb17)) * add detailed zoom decision debug panel ([cb57f15](cb57f1585a)) * add dev-only crop tool for custom map region cropping ([855e5df](855e5df2c0)) * add download and share buttons to shared worksheet viewer ([9b8947a](9b8947a198)) * add dynamic layout preview component for orientation selection ([8df62d6](8df62d6a45)) * add dynamic operator icon to tab navigation ([b6ff995](b6ff995a8c)) * add exponential zoom scaling for sub-pixel regions ([101213b](101213ba1c)) * add fancy QR codes with abacus logo throughout app ([ebcabf9](ebcabf9bb9)) * add give up with zoom animation for Know Your World ([94cff43](94cff4374f)) * add gold scrim overlay and improve precision mode messaging ([4b20d07](4b20d0753f)) * add interactive world map continent selector ([245005c](245005c8ec)) * add Know Your World geography quiz game ([25e24a7](25e24a7cbc)) * add mobile drawer and detailed summary for shared worksheets ([0a35e70](0a35e70e28)) * add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](ab2bfde9c2)) * add per-country coloring and individual region clicks to continent selector ([2e9f409](2e9f409f26)) * add per-page worksheet generation API ([6398fbe](6398fbead9)) * add Pointer Lock API for precision mode to prevent edge issues ([4d5953d](4d5953d034)) * add precision controls for tiny regions in Know Your World ([3bf127f](3bf127f344)) * add precision mode system with pixel grid visualization ([53e9041](53e90414a3)) * add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](498df2ca5a)) * add problem space validation to warn about duplicate risk ([0b8c180](0b8c1803ff)) * add responsive mobile drawer with draggable settings button ([fc1d7fc](fc1d7fcbd6)) * add responsive page button layout with dynamic dropdown ([3f33cd1](3f33cd1924)) * add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](4b8b3ee532)) * add single-page worksheet preview API endpoint ([10e97db](10e97db78a)) * add skill configuration system with interactive 2D difficulty plot ([7fbc743](7fbc743c4c)), closes [#9333](https://github.com/antialias/soroban-abacus-flashcards/issues/9333) [#10b981](https://github.com/antialias/soroban-abacus-flashcards/issues/10b981) * add smooth fade-in animation for 404 message text changes ([e88380a](e88380a48d)) * add split-action share button with copy shortcut ([085d200](085d200da4)) * add themed backgrounds and enhanced styling to 404 page ([dd14062](dd14062112)) * add visible grab tab to worksheet panel resize handle ([288e6ed](288e6ed878)) * add visual debugging for zoom importance scoring ([e60a2c0](e60a2c09c0)) * add visual grab tab to resize handle with rounded corners ([6e55d5a](6e55d5add7)) * add visual warnings to page selector buttons ([5a87799](5a8779969c)) * add worksheet generation core logic and helpers ([163517d](163517db7d)) * add worksheet sharing infrastructure with database persistence ([7b4c7c3](7b4c7c3fb6)) * add worksheet studio with comprehensive features ([d5672bd](d5672bdddf)) * apply skill-specific scaffolding and fix mini card heights ([ee90182](ee90182ff2)) * **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](dd9587f8cd)) * calculate zoom based on region under cursor, target 15% area ([6736336](6736336317)) * convert operator selection to checkboxes with required validation ([c997c4a](c997c4a7ba)) * create unified difficulty interface with 2-tab selector ([0b7382f](0b7382f1b6)) * enable production source maps for easier debugging ([d992e98](d992e98d77)) * enhance scaffolding tab with live preview and resolved display rules ([9a5a0d4](9a5a0d4e3c)) * **help-system:** add focus areas for skills needing reinforcement ([871390d](871390d8e1)) * **help-system:** add schema for progressive help and feedback loop ([41c4603](41c46038d8)) * **help-system:** add usePracticeHelp hook and skill extraction ([0b1ad1f](0b1ad1f896)) * **help-system:** integrate PracticeHelpPanel into ActiveSession ([373ec34](373ec34e46)) * hide easter egg hint until first discovery ([c2c7153](c2c71531ae)) * implement binary search for optimal zoom level ([1a54f09](1a54f09814)) * implement fit-crop-with-fill for custom map crops ([b6569ed](b6569ed4e1)) * implement lazy loading for worksheet preview with cursor pagination ([8b3d019](8b3d019652)) * implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](2a7d67db58)) * improve shared worksheet viewer UX and multi-page support ([1c10a82](1c10a82c78)) * improve tab navigation layout and add pages to layout button ([926a029](926a029ff8)) * improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](57fb99af63)) * increase max super zoom to 120x for ultra-tiny regions ([9b782be](9b782beabf)) * increase max zoom to 1000x with detailed debug logging ([a6be05f](a6be05f8c1)) * **know-your-world:** add 'H' keyboard shortcut for hint ([cdc9451](cdc94514d9)) * **know-your-world:** add adaptive hint cycling for struggling users ([5440250](54402501e5)) * **know-your-world:** add celebration animations for found regions ([3b9d6b0](3b9d6b0fdf)) * **know-your-world:** add device capability hooks and improve mobile support ([c502a4f](c502a4fa92)) * **know-your-world:** add drill-down map selector and improve setup UI ([a6f8dbe](a6f8dbe474)) * **know-your-world:** add filter tabs for size, importance, and population ([6c3c0ac](6c3c0ac70e)) * **know-your-world:** add fire tracer animation for learning mode takeover ([1e6153e](1e6153ee8b)) * **know-your-world:** add hint system, pointer lock buttons, and mobile magnifier support ([55e480c](55e480c03b)) * **know-your-world:** add hints for Europe and Africa regions ([46e5c6b](46e5c6b99b)) * **know-your-world:** add hot/cold audio feedback for cursor proximity ([69813e9](69813e92a2)) * **know-your-world:** add hot/cold debug panel and production debug mode ([493313a](493313a3bb)) * **know-your-world:** add hot/cold feedback for mobile magnifier ([824325b](824325b843)) * **know-your-world:** add interaction state machine foundation ([e4d6748](e4d6748d70)) * **know-your-world:** add Learning mode and fix hints before name unlock ([fc87808](fc87808b40)) * **know-your-world:** add learning mode takeover animation and fix give-up sequence ([3fd8472](3fd8472e68)) * **know-your-world:** add map zoom preview, remove study time feature ([57dd61b](57dd61b994)) * **know-your-world:** add missing island hints and revise all hints ([8b13b5a](8b13b5a455)) * **know-your-world:** add mobile cursor sharing and fix multi-device coop mode ([2ce5e18](2ce5e180b7)) * **know-your-world:** add mobile virtual keyboard and space-skipping ([5318d0d](5318d0dd89)) * **know-your-world:** add multiplayer cursor sharing and fix map viewport ([c3b94be](c3b94bea3d)) * **know-your-world:** add puzzle piece fly-to-map animation for learning mode ([7c49652](7c496525e9)) * **know-your-world:** add range thermometer for region size selection ([c7c4e7c](c7c4e7cef3)) * **know-your-world:** add region shape silhouette to learning takeover ([ebe07e3](ebe07e358f)) * **know-your-world:** add session-based give-up voting and fix cursor emojis ([bb2d6fc](bb2d6fc7d8)) * **know-your-world:** add speech announcements and compass-style crosshairs ([e0b762e](e0b762e3ee)) * **know-your-world:** add speech synthesis for hints with auto-hint/auto-speak ([cd841ff](cd841ff7dc)) * **know-your-world:** add Strudel-based music system ([7dab07b](7dab07b3a7)) * **know-your-world:** add SVG path geometry helpers for future use ([ea141f0](ea141f04f6)) * **know-your-world:** add turn-based restrictions for letter typing ([45730bb](45730bb4db)) * **know-your-world:** align guidance UI with assistance levels ([7e7a8dc](7e7a8dc1e8)) * **know-your-world:** auto-enable hot/cold for learning mode ([dcc32c2](dcc32c288f)) * **know-your-world:** enhance hint audio and region name display ([e6f58bf](e6f58bfd93)) * **know-your-world:** fix magnifier outline aspect ratio and add visual debug toggle ([ac915f2](ac915f2065)) * **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](1729418dc5)) * **know-your-world:** implement empirical scale measurement for 1:1 magnifier tracking ([39886e8](39886e859c)) * **know-your-world:** improve magnifier UX and hide abacus on games ([fa1514d](fa1514d351)) * **know-your-world:** improve mobile magnifier controls and animations ([4449fb1](4449fb19b4)) * **know-your-world:** improve mobile magnifier with adaptive zoom and select button ([60cf98e](60cf98e77a)) * **know-your-world:** improve region size filter layout ([558d369](558d369ba0)) * **know-your-world:** improve setup screen UX ([dc4d621](dc4d62195b)) * **know-your-world:** improve takeover UI and fix celebration sound bug ([a8c6b84](a8c6b84855)) * **know-your-world:** live crop updates and safe zone improvements ([3f4691e](3f4691e8a3)) * **know-your-world:** make magnifier lazy - only move when cursor obscured ([ac82564](ac82564eac)) * **know-your-world:** make magnifier size responsive to aspect ratio ([5920cb4](5920cb4dc3)) * **know-your-world:** match setup phase map positioning with gameplay ([b030558](b0305581f9)) * **know-your-world:** move region size filters inside map preview ([81301ab](81301ab148)) * **know-your-world:** move start button below settings controls ([a05c4ca](a05c4ca5bf)) * **know-your-world:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](8ce878d03e)) * **know-your-world:** responsive setup + travel-themed start button ([02762fa](02762fad81)) * **know-your-world:** separate region filtering from assistance level ([9499e4e](9499e4e8b5)) * **know-your-world:** show magnifier on mobile drag gesture ([a02a710](a02a7108e9)) * **know-your-world:** speak country names in user's locale ([426a1e6](426a1e6868)) * **know-your-world:** sync letter confirmation across multiplayer sessions ([655660f](655660f7cf)) * **know-your-world:** unified region selector with inline list on desktop ([d329d80](d329d80399)) * **know-your-world:** unify setup and gameplay UI positions ([141a506](141a506739)) * **know-your-world:** unify setup UI positions with gameplay ([c1a0485](c1a0485b1d)) * **know-your-world:** wire interaction state machine to MapRenderer ([7e55953](7e55953eee)) * make 404 page abacus hero-sized and responsive ([41de252](41de25238f)) * make resize handle grab tab fully draggable with rounded corners ([be40f70](be40f70bc6)) * make scaffolding and preview collapsible ([804fb1a](804fb1a2f6)) * make super zoom threshold configurable and increase to 3px ([d7ce474](d7ce474a51)) * make zoom transitions 4x slower for smoother experience ([ca752bd](ca752bd0aa)) * move difficulty parameters into Smart mode ([4b66758](4b667587f8)) * move layout controls to OrientationPanel with toggles ([995966f](995966ffbc)) * operator-specific scaffolding for mixed mastery mode ([4d7d000](4d7d000046)) * optimize problem generation and add duplicate warning system ([11c46c1](11c46c1b44)) * pause zoom animation at precision mode threshold ([c4989b3](c4989b3ab0)) * pause/resume zoom animation at precision mode threshold ([bdf59e5](bdf59e571d)) * pause/resume zoom animation at precision mode threshold ([4687820](4687820d8a)) * persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](8cb2209d84)) * **practice:** add dark mode support and fix doubled answer digits ([026993c](026993cb05)) * **practice:** add progressive help overlay with proper positioning ([9a4ab82](9a4ab8296e)) * **practice:** add session HUD with tape-deck controls and PageWithNav ([b19c6d0](b19c6d0eca)) * **practice:** add smooth problem transition animation ([b12112e](b12112e8da)) * **practice:** add student onboarding and offline sync features ([b52f054](b52f0547af)) * **practice:** add three-part daily practice session system ([5855438](585543809a)) * **practice:** improve help UX with coach hints and simplified UI ([19169ad](19169ad9fe)) * **practice:** integrate progressive help with decomposition display ([804d937](804d937dd9)) * redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](23dccc0ef3)) * remove all easter egg hints from 404 page ([1756182](17561829ef)) * remove redundant navigation buttons from 404 page ([e5262e5](e5262e5007)) * show magnifier only when current target region needs magnification ([996c973](996c973774)) * show magnifier only when target region needs it ([c6997ac](c6997ac9a7)) * show visual feedback for auto-resolved scaffolding values ([fbe776a](fbe776ac09)) * smooth cursor dampening transitions with react-spring ([66544dc](66544dc7dd)) * **thermometer:** add "only" buttons to quickly select single category ([623f882](623f882075)) * **worksheets:** add 3x scale effect to thrown dice ([920a855](920a855eb5)) * **worksheets:** add draggable dice easter egg with physics ([b8e66df](b8e66dfc17)) * **worksheets:** add duplicate risk warnings to page selector UI ([1d8dceb](1d8dceb55b)) * **worksheets:** add foundational steps to progression path ([7e6f99b](7e6f99b78c)) * **worksheets:** add QR codes with share codes for easy worksheet sharing ([a0e73d9](a0e73d971b)) * **worksheets:** add shuffle button with animated dice icon ([f97efb5](f97efb5c94)) * **worksheets:** add viewport edge ricochet to dice physics ([c6db7dc](c6db7dcfa2)) * **worksheets:** enhance dice throw physics for natural feel ([047a960](047a960567)) * **worksheets:** restore mastery progression UI with 3-way mode selector ([26a0885](26a08859d7)) * **worksheets:** smooth dice rotation settle to final face ([d00c707](d00c70750e)) * **worksheets:** upgrade to 3D dice with random rotation animation ([3cd5e49](3cd5e4992b)) ### Performance Improvements * add spatial filtering to skip distant regions ([8cb4c88](8cb4c88bef)) * cache polygon conversions to fix performance regression ([348ce8f](348ce8f314)) * **know-your-world:** memoize state machine return value and remove debug logging ([d85b976](d85b976f8b)) * reduce retry limit from 3000 to 100 in problem generators ([08fef59](08fef59cc5)) ### Reverts * **know-your-world:** undo premature extractions, restore working state ([f0bf205](f0bf2050d3)) * remove ngrok and LAN IP detection ([0040b57](0040b57829))
This commit is contained in:
parent
e937c05323
commit
fd7e317151
|
|
@ -1,3 +1,362 @@
|
||||||
|
# [2.15.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.14.0...abacus-react-v2.15.0) (2025-12-08)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **404:** reset easter egg config on page reload/close ([d6f1c13](https://github.com/antialias/soroban-abacus-flashcards/commit/d6f1c1331777c47db6963d56c29edbfa90fca903))
|
||||||
|
* account for SVG preserveAspectRatio in coordinate transforms ([e4e0925](https://github.com/antialias/soroban-abacus-flashcards/commit/e4e09256c2ad6dd72ca620af017a5d893671264e))
|
||||||
|
* add 'auto' to RuleMode type to prevent undefined display values ([a8636ca](https://github.com/antialias/soroban-abacus-flashcards/commit/a8636ca6a2d06d31780d71ec67e35176b3dd3259))
|
||||||
|
* add comprehensive dark mode support to Smart Difficulty controls ([a65feb7](https://github.com/antialias/soroban-abacus-flashcards/commit/a65feb734407b7f991a28e391dc1b4a06150eaea))
|
||||||
|
* add cooldown after quick-escape to prevent precision mode re-activation ([e885ae7](https://github.com/antialias/soroban-abacus-flashcards/commit/e885ae7ef45430b2c3511c22ad0e418a09a178c5))
|
||||||
|
* add currentStepEstimate to required fields in JSON schema ([0d66c54](https://github.com/antialias/soroban-abacus-flashcards/commit/0d66c549914de496d80256e3df497abae5d29a45))
|
||||||
|
* add custom cursor when pointer lock is active ([5d6d6b4](https://github.com/antialias/soroban-abacus-flashcards/commit/5d6d6b4ddc5bc66c05ec433cd6daadb2692286f0))
|
||||||
|
* add missing openDeploymentInfo prop to MinimalNav ([30879d8](https://github.com/antialias/soroban-abacus-flashcards/commit/30879d8959d9055578b4e64691987cb96064a7d8))
|
||||||
|
* add missing scaleX and scaleY number conversions ([ae6cc5e](https://github.com/antialias/soroban-abacus-flashcards/commit/ae6cc5e3268654ff1d44f340413c7deea5c939c4))
|
||||||
|
* add missing selectedContinent to default config and fix ts-expect-error directives ([07e9224](https://github.com/antialias/soroban-abacus-flashcards/commit/07e92240e8eb1c9c2bcda5f9b7ba0e13f523b412))
|
||||||
|
* add mode descriptions and remove double borders ([6f2f6d4](https://github.com/antialias/soroban-abacus-flashcards/commit/6f2f6d444cc5043dc530ba9454e632d414b9c343))
|
||||||
|
* add quotes around unquoted keys when parsing customCrops.ts ([0add49c](https://github.com/antialias/soroban-abacus-flashcards/commit/0add49c5999d51ffb27ef5b18a3418a94bae8c40))
|
||||||
|
* add seed and prngAlgorithm fields to all Zod schema versions (V1-V4) ([1782f42](https://github.com/antialias/soroban-abacus-flashcards/commit/1782f427f17822ccf9d0f14bdc3661abe8259d14))
|
||||||
|
* add shuffling to progressive difficulty mode & UI improvements ([38e9982](https://github.com/antialias/soroban-abacus-flashcards/commit/38e9982c3dc65f6b7054b563c97e481ba5aa77d2))
|
||||||
|
* add zoom to selected continent and improve click detection ([6651979](https://github.com/antialias/soroban-abacus-flashcards/commit/6651979ea0a712413b742b081e9ff667eea5ff2f))
|
||||||
|
* align share persistence with user session logic ([72c72fc](https://github.com/antialias/soroban-abacus-flashcards/commit/72c72fc2180637352da79c0c7ed9dbd9cf137af3))
|
||||||
|
* calculate total problems correctly in preview API ([25dfb71](https://github.com/antialias/soroban-abacus-flashcards/commit/25dfb71b3effc29ea97e2f1884c133e25834728b))
|
||||||
|
* cancel previous give-up animation when new give-up starts ([c01cb7f](https://github.com/antialias/soroban-abacus-flashcards/commit/c01cb7f3840d4a70e607aeb9a74d6dd7db9804cb))
|
||||||
|
* cap zoom when releasing pointer lock (escape key) ([2331f10](https://github.com/antialias/soroban-abacus-flashcards/commit/2331f1038c094fadc5fb1994b0ff8e7a6303d351))
|
||||||
|
* center crosshairs and re-enable pointer lock after escape ([814bf94](https://github.com/antialias/soroban-abacus-flashcards/commit/814bf949f2bc4c1ed023770c6cdff5f69d706903))
|
||||||
|
* change zoom capping to create pause effect instead of slow easing ([f2ca9d1](https://github.com/antialias/soroban-abacus-flashcards/commit/f2ca9d1ebe418007bcc5bc9953c502e5dc053139))
|
||||||
|
* combine fast easing with smooth precision mode transition ([cab1fbf](https://github.com/antialias/soroban-abacus-flashcards/commit/cab1fbff955ceb41df1482d96b94a42acd979d1a))
|
||||||
|
* configure Next.js to transpile [@svg-maps](https://github.com/svg-maps) ES modules ([ebf2b66](https://github.com/antialias/soroban-abacus-flashcards/commit/ebf2b66910b9265976763e7cf211de383850c84f))
|
||||||
|
* consolidate worksheet validation constants and increase MAX_PAGES to 100 ([0f3ec36](https://github.com/antialias/soroban-abacus-flashcards/commit/0f3ec369bfdecde0b1a3fa79564856424a2adcef))
|
||||||
|
* correct GPT-5 API parameters and surface actual grading errors ([2d33f35](https://github.com/antialias/soroban-abacus-flashcards/commit/2d33f35c4d908fb743e4a29974f867fa673970e2))
|
||||||
|
* **create:** use inline styles for dynamic gradient backgrounds ([ed25b32](https://github.com/antialias/soroban-abacus-flashcards/commit/ed25b323e8925ef4864a0a716f464cd3488dd9ae))
|
||||||
|
* DevCropTool key quoting and magnifier label positioning ([2e4f22a](https://github.com/antialias/soroban-abacus-flashcards/commit/2e4f22a522c3b50ef4246c0a09640a07b8e849db))
|
||||||
|
* don't show labels for excluded/filtered regions ([a83fbb1](https://github.com/antialias/soroban-abacus-flashcards/commit/a83fbb10702640c56add16ce745c598f0bf81960))
|
||||||
|
* eagerly load map caches in browser and use Suspense pattern ([db6be73](https://github.com/antialias/soroban-abacus-flashcards/commit/db6be73a1cdc4eb1bbf0fea11ad3a02ed8e678e8))
|
||||||
|
* eliminate cursor dampening lag when changing direction ([fc08b77](https://github.com/antialias/soroban-abacus-flashcards/commit/fc08b775db72f5cd8ed360e7707a62505c94074b))
|
||||||
|
* enable page virtualization in worksheet creator ([b675f6c](https://github.com/antialias/soroban-abacus-flashcards/commit/b675f6c96edac6ce156ec6626001438f5e3a865c))
|
||||||
|
* enable vertical scrolling in layout controls ([a1b31f4](https://github.com/antialias/soroban-abacus-flashcards/commit/a1b31f454a698b6ab4a43f985f6df4d36d92ecf1))
|
||||||
|
* enable virtualization for worksheet preview by limiting SSR to 3 pages ([f409e3c](https://github.com/antialias/soroban-abacus-flashcards/commit/f409e3c2ed82f813b33fadb6b53115ab31bd11d7))
|
||||||
|
* ensure entire region path is clickable with pointerEvents: all ([eb94191](https://github.com/antialias/soroban-abacus-flashcards/commit/eb94191b2e436081872a9f5998bdfc9d0d4695fe))
|
||||||
|
* export worksheet schema tables from index ([6a16674](https://github.com/antialias/soroban-abacus-flashcards/commit/6a1667404f56e75bf68abfa75ae5402ec459df90))
|
||||||
|
* hide abacus on /arcade and /arcade-rooms routes ([77033f0](https://github.com/antialias/soroban-abacus-flashcards/commit/77033f0b22692180ce806c2f6777f4f493ad240c))
|
||||||
|
* implement manual click detection using precise cursor position ([156f63f](https://github.com/antialias/soroban-abacus-flashcards/commit/156f63faaf86e26bb2fd6c7b5bc8df66769742ba))
|
||||||
|
* improve dark mode contrast in OrientationPanel dropdown ([f9e2343](https://github.com/antialias/soroban-abacus-flashcards/commit/f9e2343ffbf5694c0b9e2f2f108d86a40f2a756f))
|
||||||
|
* improve dark mode for orientation and page buttons ([fe9b9f9](https://github.com/antialias/soroban-abacus-flashcards/commit/fe9b9f9ffacc992ee654364fdf63eebbba0e9aa7))
|
||||||
|
* improve draggable button constraints to avoid action button overlap ([00b0fb2](https://github.com/antialias/soroban-abacus-flashcards/commit/00b0fb297bf7bc72648ee672f6ce6f0c4cadd28f))
|
||||||
|
* improve magnifier zoom calculation for multi-piece regions ([cb4114f](https://github.com/antialias/soroban-abacus-flashcards/commit/cb4114f34458d53c090f59dc0da4aa63a9368610))
|
||||||
|
* improve magnifier zoom smoothness and debug panel ([639e662](https://github.com/antialias/soroban-abacus-flashcards/commit/639e662d762120f27b07a0c6c68b72d2709f3282))
|
||||||
|
* improve socket server error messages for better debugging ([5d1ea7d](https://github.com/antialias/soroban-abacus-flashcards/commit/5d1ea7db2d66b5330ca83bf9a67b480088b3b672))
|
||||||
|
* improve text contrast for selected dropdown items in dark mode ([8d03452](https://github.com/antialias/soroban-abacus-flashcards/commit/8d0345287f87ec49dad2dc38724395f47e04f62f))
|
||||||
|
* improve zoom easing to threshold by deferring capping ([b355a3f](https://github.com/antialias/soroban-abacus-flashcards/commit/b355a3fc8fda1d396352566139e9335b35c8a4e8))
|
||||||
|
* increase sampling density for tiny region detection and show all detected regions ([2c9f760](https://github.com/antialias/soroban-abacus-flashcards/commit/2c9f760ae9a16b6dc9ebc4ec3b62a5f0a40702e3))
|
||||||
|
* increase super zoom multiplier from 2.5x to 5.0x for Gibraltar ([138e6c0](https://github.com/antialias/soroban-abacus-flashcards/commit/138e6c071be6d544470cb075de5f825d881db341))
|
||||||
|
* increase z-index of pointer lock prompt overlay ([5388441](https://github.com/antialias/soroban-abacus-flashcards/commit/5388441ebb95634663d3f3f1afc10f9d72cb9e03))
|
||||||
|
* **know-your-world:** actually change magnifier element dimensions to 1/3 ([31a06d6](https://github.com/antialias/soroban-abacus-flashcards/commit/31a06d6fef0612fa462906630fd731d24e7bdb0b))
|
||||||
|
* **know-your-world:** allow space in name confirmation input ([285b128](https://github.com/antialias/soroban-abacus-flashcards/commit/285b128bb8ffc0aedfb8450948befd9688e0521a))
|
||||||
|
* **know-your-world:** center setup settings panel horizontally ([5f69fab](https://github.com/antialias/soroban-abacus-flashcards/commit/5f69fab8595e06943fde2ebfb4ae03871fceee10))
|
||||||
|
* **know-your-world:** correctly identify local player for cursor sharing ([7aafe8c](https://github.com/antialias/soroban-abacus-flashcards/commit/7aafe8c92e0b73bd72d43a42a6596b91934c92c2))
|
||||||
|
* **know-your-world:** enable hot/cold only for current player in turn mode ([f5ce53e](https://github.com/antialias/soroban-abacus-flashcards/commit/f5ce53efc057fcc2bed09a39b264c54170f651b8))
|
||||||
|
* **know-your-world:** fix celebration timer restart and mobile magnifier dismissal bugs ([0558132](https://github.com/antialias/soroban-abacus-flashcards/commit/055813205a680e4204329861589637ea28160d23))
|
||||||
|
* **know-your-world:** fix hot/cold visual feedback delay ([a6352ec](https://github.com/antialias/soroban-abacus-flashcards/commit/a6352ec6240abfe7bfb975ef5c28ab5cb805e837))
|
||||||
|
* **know-your-world:** fix pointer lock escape for all edges and add smooth release animation ([a7fa858](https://github.com/antialias/soroban-abacus-flashcards/commit/a7fa858a29faf3d5f7e7d8a6d18ea96c6b7908ec))
|
||||||
|
* **know-your-world:** fix server/client filter mismatch for USA map ([98e74ba](https://github.com/antialias/soroban-abacus-flashcards/commit/98e74bae3a0eccd8be81e547b030c3ce739f7b82))
|
||||||
|
* **know-your-world:** fix TypeScript build errors ([f622bfa](https://github.com/antialias/soroban-abacus-flashcards/commit/f622bfab54ac40846a41a77f7f60715d2f0535b9))
|
||||||
|
* **know-your-world:** guard against undefined state during session init ([ea8965b](https://github.com/antialias/soroban-abacus-flashcards/commit/ea8965bc95379d005b4e2dc1b9ae3716dd24b065))
|
||||||
|
* **know-your-world:** improve crosshair UX and fix mobile Select button ([0584863](https://github.com/antialias/soroban-abacus-flashcards/commit/0584863bdd4b17316c264e46ca4309b2dd74546e))
|
||||||
|
* **know-your-world:** improve mobile layout for setup screen ([81b44a6](https://github.com/antialias/soroban-abacus-flashcards/commit/81b44a6422848d949ff8c3b082cff12c373b12cb))
|
||||||
|
* **know-your-world:** improve mobile magnifier positioning and sizing ([9a254e2](https://github.com/antialias/soroban-abacus-flashcards/commit/9a254e29331dadc990f31cdc182482b5b5da8141))
|
||||||
|
* **know-your-world:** improve mobile magnifier touch controls ([aee5f21](https://github.com/antialias/soroban-abacus-flashcards/commit/aee5f21ecc8982115e0012c59011dd8b342d5ca1))
|
||||||
|
* **know-your-world:** make game settings visible in right panel ([11d2d56](https://github.com/antialias/soroban-abacus-flashcards/commit/11d2d5693c8e72d07750ea54b1e33158431912b5))
|
||||||
|
* **know-your-world:** move Start button to top-right settings panel ([cc51de3](https://github.com/antialias/soroban-abacus-flashcards/commit/cc51de35e397641f5c0f4a054ea350cd5d255cd7))
|
||||||
|
* **know-your-world:** normalize accented letters for keyboard input ([b27856e](https://github.com/antialias/soroban-abacus-flashcards/commit/b27856e9fc4f339f50c148b6f0adbdb3c0b93140))
|
||||||
|
* **know-your-world:** prevent hint bubble closing when toggling settings ([a67c11a](https://github.com/antialias/soroban-abacus-flashcards/commit/a67c11ae045bcbf17861d9475dc824cb97652f8d))
|
||||||
|
* **know-your-world:** raise auto-zoom thresholds for tiny regions ([17c113e](https://github.com/antialias/soroban-abacus-flashcards/commit/17c113e68b26d41d0bdd025e64dcbfcee0836f3e))
|
||||||
|
* **know-your-world:** reduce magnifier size to 1/3 of pane dimensions ([61a438d](https://github.com/antialias/soroban-abacus-flashcards/commit/61a438dd31161313aeeb99573084ff8372cc875b))
|
||||||
|
* **know-your-world:** remove confidence gate from hot/cold visual emoji ([7f6b9dd](https://github.com/antialias/soroban-abacus-flashcards/commit/7f6b9dd558902e7c19c9b4ce4c0590be4ecfe4e4))
|
||||||
|
* **know-your-world:** remove hovered region label from setup screen ([5bb2288](https://github.com/antialias/soroban-abacus-flashcards/commit/5bb228883d5c05e23c11762c35ad6bdad45d1d46))
|
||||||
|
* **know-your-world:** Remove redundant preventDefault calls in touch handlers ([021a75f](https://github.com/antialias/soroban-abacus-flashcards/commit/021a75f583c779861323f51a1a3f5bb2933cbf62))
|
||||||
|
* **know-your-world:** remove tips section from setup screen ([c9e9190](https://github.com/antialias/soroban-abacus-flashcards/commit/c9e91909378756954aa0000b963da8dbe1eb29cd))
|
||||||
|
* **know-your-world:** replace react-spring with CSS animation for crosshair rotation ([af5e7b5](https://github.com/antialias/soroban-abacus-flashcards/commit/af5e7b59dcc6a7469968f0be51badb7e3753fbc0))
|
||||||
|
* **know-your-world:** restore no-music celebration sounds ([f6d1295](https://github.com/antialias/soroban-abacus-flashcards/commit/f6d1295c6f903933e40b15c75b4373049a8a0421))
|
||||||
|
* **know-your-world:** restore Start button character ([7013a7b](https://github.com/antialias/soroban-abacus-flashcards/commit/7013a7b0683d9187f12a07814534a89aca176363))
|
||||||
|
* **know-your-world:** stabilize mobile magnifier 1:1 touch tracking ([ab30add](https://github.com/antialias/soroban-abacus-flashcards/commit/ab30adda25a0f129ee93071c8df5af7ce8efa5cf))
|
||||||
|
* **know-your-world:** suppress hot/cold hints during takeover and give-up ([9f6b425](https://github.com/antialias/soroban-abacus-flashcards/commit/9f6b425daf47b6c62c9c6fed8dc87d95943dc0af))
|
||||||
|
* **know-your-world:** use getBBox() for consistent takeover positioning ([f8acc4a](https://github.com/antialias/soroban-abacus-flashcards/commit/f8acc4aa6aeac44d7c0e99db257e49484d87e633))
|
||||||
|
* **know-your-world:** use localPlayerId for cursor updates in all modes ([5e8c37b](https://github.com/antialias/soroban-abacus-flashcards/commit/5e8c37b68ed6031f030b1429f76b6b456df4bd88))
|
||||||
|
* **know-your-world:** use shared MAX_ZOOM constant for mobile magnifier ([e4c35e9](https://github.com/antialias/soroban-abacus-flashcards/commit/e4c35e94250067ead48dc97405355fcbacaa7838))
|
||||||
|
* **know-your-world:** use spring-for-speed pattern for smooth crosshair rotation ([b7fe2af](https://github.com/antialias/soroban-abacus-flashcards/commit/b7fe2af3696c052c55f712b3d19777903a061c58))
|
||||||
|
* **know-your-world:** use viewport-based maxHeight for right panel ([a4f9db6](https://github.com/antialias/soroban-abacus-flashcards/commit/a4f9db6d3f62d8ebb808eced8b0ea3a8ba1fa342))
|
||||||
|
* lazy-load map data in know-your-world validator ([07c25a2](https://github.com/antialias/soroban-abacus-flashcards/commit/07c25a2296dde620bb73e5f37c500f72625eb9f9))
|
||||||
|
* lower quick-escape threshold to 15px/frame for easier triggering ([97b214d](https://github.com/antialias/soroban-abacus-flashcards/commit/97b214da12bdb782a56bbb388d6f31c0e97e9c82))
|
||||||
|
* make map-renderer fill parent container for fit-crop-with-fill ([18b1476](https://github.com/antialias/soroban-abacus-flashcards/commit/18b14766b23071016c7e3c5629621e378237756c))
|
||||||
|
* make placeholder pages match actual page dimensions ([4003c5c](https://github.com/antialias/soroban-abacus-flashcards/commit/4003c5ceb76e74ec79a93b77322e203b7dc3bcc5))
|
||||||
|
* make useArcadeSocket work without ArcadeErrorProvider ([01740af](https://github.com/antialias/soroban-abacus-flashcards/commit/01740afcb7c426c721544f8034ad821558609a79))
|
||||||
|
* merge duplicate style attributes on magnifier SVG ([3eda493](https://github.com/antialias/soroban-abacus-flashcards/commit/3eda493051965772056bcfc2bc8c14176d4efd3b))
|
||||||
|
* move pointer lock management to MapRenderer ([0ed4d13](https://github.com/antialias/soroban-abacus-flashcards/commit/0ed4d13db61b01b12b5bbc10f8ae7aabc286fb72))
|
||||||
|
* page indicator not tracking scroll when showing all pages ([3d157e3](https://github.com/antialias/soroban-abacus-flashcards/commit/3d157e32edae1a5655a14d943a02d8752935aaa8))
|
||||||
|
* page indicator stuck on page 1 due to stale closure ([952ebc7](https://github.com/antialias/soroban-abacus-flashcards/commit/952ebc7756273900c60d714f0ef1da07af99e7d1))
|
||||||
|
* pass correct parameter for borrow boxes in subtraction ([00d892a](https://github.com/antialias/soroban-abacus-flashcards/commit/00d892a05c6644d2f00eb54a88ab9b01d2d05c6f))
|
||||||
|
* position debug panel opposite from magnifier ([aa80a73](https://github.com/antialias/soroban-abacus-flashcards/commit/aa80a7366499ea1e3e954368fd335d0f9a5a6919))
|
||||||
|
* position shared worksheet banner below app nav ([fb3412c](https://github.com/antialias/soroban-abacus-flashcards/commit/fb3412c9a54a00ee541a0060a45f027784faaeee))
|
||||||
|
* **practice:** add 80px top padding to account for app nav height ([a50b268](https://github.com/antialias/soroban-abacus-flashcards/commit/a50b268d354cf5e0778736c67e28fa2c4be05fce))
|
||||||
|
* **practice:** allow vertical overflow for help overlays ([1ddf9fc](https://github.com/antialias/soroban-abacus-flashcards/commit/1ddf9fc94f9b45f0791b2e987f39db6abd8c82a8))
|
||||||
|
* **practice:** prevent decomposition math from wrapping ([52ea3f1](https://github.com/antialias/soroban-abacus-flashcards/commit/52ea3f10fa9140daa8b46196feeab51628a4f010))
|
||||||
|
* **practice:** remove overflow clipping to allow help overlays ([e9b123a](https://github.com/antialias/soroban-abacus-flashcards/commit/e9b123a7b3df66655e86f76734621c0f99a6e9b3))
|
||||||
|
* **practice:** remove redundant 'already at target' message ([e9ccfb9](https://github.com/antialias/soroban-abacus-flashcards/commit/e9ccfb918618f5ad2b7bad9254390d02c48c36c3))
|
||||||
|
* **practice:** use explicit padding to prevent shorthand override ([4c00d92](https://github.com/antialias/soroban-abacus-flashcards/commit/4c00d92ccb6cd73d1572810f4ea990e08d66addd))
|
||||||
|
* preserve saved seed on page reload ([64ce64b](https://github.com/antialias/soroban-abacus-flashcards/commit/64ce64bd3547c6df7b926bf6275be761a0704548))
|
||||||
|
* preserve seed and prngAlgorithm in config migrations ([b18c412](https://github.com/antialias/soroban-abacus-flashcards/commit/b18c4127361339893b2b700668c135ceeb53e4d2))
|
||||||
|
* preserve user's scaffolding settings when changing skills ([1eb04ce](https://github.com/antialias/soroban-abacus-flashcards/commit/1eb04ce0c46e7ec745b8cc8c8580b3ff731916a1))
|
||||||
|
* prevent duplicate API calls in React StrictMode ([0d59676](https://github.com/antialias/soroban-abacus-flashcards/commit/0d59676b38511038d12521a2c3658f3253238501))
|
||||||
|
* prevent modal closure when clicking tabs in AllSkillsModal ([4746e1f](https://github.com/antialias/soroban-abacus-flashcards/commit/4746e1f8fe41d4766d0bcb453c26e1395e593b27))
|
||||||
|
* prevent regrouping problems in no-regrouping skills and enable progressive difficulty toggle ([59712e1](https://github.com/antialias/soroban-abacus-flashcards/commit/59712e1021c41826f940fe506c7781679b46b6a1))
|
||||||
|
* prevent skill name wrapping in mini cards with single-line ellipsis ([a463d08](https://github.com/antialias/soroban-abacus-flashcards/commit/a463d088d763ffc9708e8a7d2a94369b1cc6d414))
|
||||||
|
* prevent zoom jump on precision mode activation by resetting spring target ([33d9f15](https://github.com/antialias/soroban-abacus-flashcards/commit/33d9f15897cdc75e2fa2001430d75c23c6b282a4))
|
||||||
|
* prevent zoom jump when activating precision mode ([9cb3c89](https://github.com/antialias/soroban-abacus-flashcards/commit/9cb3c898ec3493c9a59b9beb6893daa359dd63cd))
|
||||||
|
* properly apply dark mode hover states in dropdown ([34553ce](https://github.com/antialias/soroban-abacus-flashcards/commit/34553cebf7f9c232a37b2bef6bf4d8f1aad99748))
|
||||||
|
* properly cycle through problem sets when exceeding unique problem space ([55d4920](https://github.com/antialias/soroban-abacus-flashcards/commit/55d49201678fa8ad7f8e7530b13461e5984838c6))
|
||||||
|
* properly zoom to selected continent in game phases ([e900e44](https://github.com/antialias/soroban-abacus-flashcards/commit/e900e4465bbde8d8b0787581d6e8603fdf36975f))
|
||||||
|
* reduce font size for mini skill card titles to prevent wrapping ([833b481](https://github.com/antialias/soroban-abacus-flashcards/commit/833b481ebbbece93b2e4f38b688dc37829c3c5a8))
|
||||||
|
* refactor worksheet config persistence to blacklist approach + Storybook stories ([5b6db58](https://github.com/antialias/soroban-abacus-flashcards/commit/5b6db588a288d23058589c48f4ccf7f9d694eb28))
|
||||||
|
* regenerate lockfile to remove big.js dependencies ([05fc5cf](https://github.com/antialias/soroban-abacus-flashcards/commit/05fc5cfe4952115307930eff2d9ceac14c35fb6f))
|
||||||
|
* remove all scaffolding from final mastery skills ([d7bec42](https://github.com/antialias/soroban-abacus-flashcards/commit/d7bec423e0d43ac7df6123d85001c4dbcc936740))
|
||||||
|
* remove background rect from main map SVG ([7d3c5c3](https://github.com/antialias/soroban-abacus-flashcards/commit/7d3c5c304b61f3fbc64d626b0712c74e895af9c9))
|
||||||
|
* remove duplicate containerRect declaration ([1a690e0](https://github.com/antialias/soroban-abacus-flashcards/commit/1a690e00b04f2fe20dfd611449f4bf323f7b3d99))
|
||||||
|
* remove magnifierSpring.zoom from effect dependencies ([5eb2eed](https://github.com/antialias/soroban-abacus-flashcards/commit/5eb2eeda32ff95ccc45707acfbc329e2214ed3e1))
|
||||||
|
* remove mispositioned background rect from magnifier SVG ([5815cbe](https://github.com/antialias/soroban-abacus-flashcards/commit/5815cbee15bc1207eba0ad30d93db9dbc4735b6b))
|
||||||
|
* remove pages from visible set when they leave viewport ([9757449](https://github.com/antialias/soroban-abacus-flashcards/commit/9757449e21d31b4ce17baa5305b09506f4a54cf4))
|
||||||
|
* remove redundant 'Teens minus singles' subtraction skill ([e156e87](https://github.com/antialias/soroban-abacus-flashcards/commit/e156e870df86344f3b87e209840f23ba1c29ea75))
|
||||||
|
* remove regex lookbehind for Safari compatibility ([4d77f1f](https://github.com/antialias/soroban-abacus-flashcards/commit/4d77f1ffd3c54ba76d95618f5fe4444e0972c4d5))
|
||||||
|
* remove unused velocity tracking and fix TypeScript errors ([0195a6d](https://github.com/antialias/soroban-abacus-flashcards/commit/0195a6dc6d6796615d1a045d0c7a20e90e1b6e42))
|
||||||
|
* replace deprecated path() with curve() in borrow arrows ([47d149c](https://github.com/antialias/soroban-abacus-flashcards/commit/47d149ca17d9ff7e3ad034fad9ce5eb1cd341fc7))
|
||||||
|
* replace ES module imports with JSON data files ([fb735be](https://github.com/antialias/soroban-abacus-flashcards/commit/fb735be014d8fa625fd07d8afdffd0f561acb50d))
|
||||||
|
* resolve auto zoom freeze and stuck zoom issues ([0aee60d](https://github.com/antialias/soroban-abacus-flashcards/commit/0aee60d8d11b750f78926e54d8b5d06e51df34ff))
|
||||||
|
* respect borrow boxes display setting regardless of actual borrowing ([1aef0f2](https://github.com/antialias/soroban-abacus-flashcards/commit/1aef0f292fd20bbef0a7d284d1ab0060947626e2))
|
||||||
|
* respect operator-specific scaffolding in mastery+mixed mode ([a6472a2](https://github.com/antialias/soroban-abacus-flashcards/commit/a6472a231be65e9e3e27e5d05a2323ae8451b044))
|
||||||
|
* respect user's layout options (problemNumbers/cellBorders) in mastery mode ([e708add](https://github.com/antialias/soroban-abacus-flashcards/commit/e708add9f2960055fdebf24e1af49c917e18d75a))
|
||||||
|
* responsive page indicator and settings summary improvements ([93ddc28](https://github.com/antialias/soroban-abacus-flashcards/commit/93ddc28a3af4d66a6b8412b86472cfd4d04912c2))
|
||||||
|
* resume zoom animation immediately when precision mode activates ([7ba7e03](https://github.com/antialias/soroban-abacus-flashcards/commit/7ba7e036613876d776eaf4822317a8bad2788495))
|
||||||
|
* resume zoom animation immediately when precision mode activates ([7c1f2e5](https://github.com/antialias/soroban-abacus-flashcards/commit/7c1f2e54c9331b55b14e22edbf11897deb8780b8))
|
||||||
|
* resume zoom animation when target drops below threshold ([e73b59d](https://github.com/antialias/soroban-abacus-flashcards/commit/e73b59d510863338181338a3d2439a414a2ec15a))
|
||||||
|
* scaffolding changes now apply in mastery+mixed mode ([510f052](https://github.com/antialias/soroban-abacus-flashcards/commit/510f0529780071435395fee0792b5a73685c20b1))
|
||||||
|
* **server:** lazy-load game validators to avoid ES module errors ([a88bd58](https://github.com/antialias/soroban-abacus-flashcards/commit/a88bd5844cd9f52eb64501fb3e6d949f5dd4e84d))
|
||||||
|
* show hot/cold button on iPad with mouse attached ([1333818](https://github.com/antialias/soroban-abacus-flashcards/commit/1333818baea76360788b3c30993ab1b54e437e97))
|
||||||
|
* skip pointer lock request on unsupported devices (iPad) ([d6eb997](https://github.com/antialias/soroban-abacus-flashcards/commit/d6eb9974459efd9d72694a65803d7f8253a48012))
|
||||||
|
* stabilize mini skill card height and fix preview updates ([4a52943](https://github.com/antialias/soroban-abacus-flashcards/commit/4a5294353ebaf027d958c1886ba36d7b049c6c0a))
|
||||||
|
* take all measurements inside animation callback for label sync ([2191e07](https://github.com/antialias/soroban-abacus-flashcards/commit/2191e0732bee6f8b6be6b21de34a5a33ea9878d7))
|
||||||
|
* track both SVG units and screen pixels for zoom and dampening ([d72f309](https://github.com/antialias/soroban-abacus-flashcards/commit/d72f309badd72003d264fc06206f59d26d226a01))
|
||||||
|
* transform screen coordinates to SVG space for isPointInFill() ([4c933be](https://github.com/antialias/soroban-abacus-flashcards/commit/4c933be48a9a92d479aa86afeea0d1ff761aba88))
|
||||||
|
* transmit hovered region ID with network cursor to avoid hit-testing discrepancies ([6c3f860](https://github.com/antialias/soroban-abacus-flashcards/commit/6c3f860efc503977a53088cd038ec284727463b7))
|
||||||
|
* **tutorial:** expose activeGroupTargetColumn state to context ([69f759a](https://github.com/antialias/soroban-abacus-flashcards/commit/69f759a1787003adc1be51e25d5a6a8291b4591c))
|
||||||
|
* update AbacusQRCode for qrcode.react v4 compatibility ([0f0c3c6](https://github.com/antialias/soroban-abacus-flashcards/commit/0f0c3c65e8c15fdca4511da3d13493768e69cba8))
|
||||||
|
* update operator-specific display rules in mastery+mixed mode ([4174b6d](https://github.com/antialias/soroban-abacus-flashcards/commit/4174b6d2e7ad00cfd3cdc887345551047fb7f114))
|
||||||
|
* upgrade to Node.js 20 to resolve ES module import issues ([192de5c](https://github.com/antialias/soroban-abacus-flashcards/commit/192de5c6b54e5eb694b2b3aba0cf61f64a68f55b))
|
||||||
|
* use ± symbol for mixed operator icon consistently ([2695b50](https://github.com/antialias/soroban-abacus-flashcards/commit/2695b50abea8eea47fa9e94308ea79bc57cc8477))
|
||||||
|
* use actual SVG path geometry for region detection instead of bounding boxes ([e255ce2](https://github.com/antialias/soroban-abacus-flashcards/commit/e255ce2c6f697e01bd133f5b20309a620a3bfd9b))
|
||||||
|
* use animated spring for magnifier label positioning ([94d1cdf](https://github.com/antialias/soroban-abacus-flashcards/commit/94d1cdfcb5469c58ba196fc11ae6226f0e2d0147))
|
||||||
|
* use ASCII characters for operator icons to support dark mode ([3bd5c00](https://github.com/antialias/soroban-abacus-flashcards/commit/3bd5c00d212e838abb709e2359ff103dbce97552))
|
||||||
|
* use correct Unicode minus sign (−) for subtraction operator checks ([0dd9e45](https://github.com/antialias/soroban-abacus-flashcards/commit/0dd9e459526d784e83e50a0f8668d809bb01fa57))
|
||||||
|
* use dynamic ES module imports for [@svg-maps](https://github.com/svg-maps) packages in know-your-world ([ab94fd3](https://github.com/antialias/soroban-abacus-flashcards/commit/ab94fd350fd5b9f6a231f629975d99eedc00d11a))
|
||||||
|
* use LAN IP instead of localhost for QR code camera uploads ([00b400a](https://github.com/antialias/soroban-abacus-flashcards/commit/00b400ae8a0792ab4bb337f38c97080901981abf))
|
||||||
|
* use screen pixels for zoom, abandon SVG path parsing ([912dc38](https://github.com/antialias/soroban-abacus-flashcards/commit/912dc385b394712e7caea46d5ced328a06ee90bb))
|
||||||
|
* use subtle gray highlights for dropdown in dark mode ([8d6170a](https://github.com/antialias/soroban-abacus-flashcards/commit/8d6170a8c7042351aa1cbea9a26ed2bd58216e3d))
|
||||||
|
* use SVG viewBox units instead of screen pixels for zoom ([0dcaabb](https://github.com/antialias/soroban-abacus-flashcards/commit/0dcaabb8a5a7175e511affc2f15196784aeec05a))
|
||||||
|
* use white text for selected dropdown items in dark mode ([e1a7375](https://github.com/antialias/soroban-abacus-flashcards/commit/e1a73758d698d57383f2ed8a2b317a6670f4cba6))
|
||||||
|
* **worksheets:** add backward compatibility for displayRules in SmartModeControls ([b956e2d](https://github.com/antialias/soroban-abacus-flashcards/commit/b956e2d6057d0a6427624f7b690e4a29218ac3f6))
|
||||||
|
* **worksheets:** add borrowNotation and borrowingHints to DisplayRules interfaces ([3b908ac](https://github.com/antialias/soroban-abacus-flashcards/commit/3b908ac453df885f5dc7decd134bb603fcb0444e))
|
||||||
|
* **worksheets:** add borrowNotation and borrowingHints to validation fallback ([3f700af](https://github.com/antialias/soroban-abacus-flashcards/commit/3f700af6432735aaab4387aabcc2fc302921869d))
|
||||||
|
* **worksheets:** add mastery mode to Zod schema validation ([003f1d1](https://github.com/antialias/soroban-abacus-flashcards/commit/003f1d11cc0a6e6dc77c7f9b5ab36936f842778e))
|
||||||
|
* **worksheets:** correct Typst array membership syntax for ten-frames rendering ([14b3594](https://github.com/antialias/soroban-abacus-flashcards/commit/14b359462f1455cc4a6ddf1c191f4ca0ace167d4))
|
||||||
|
* **worksheets:** enable borrowNotation and borrowingHints in smart difficulty mode ([8020ee8](https://github.com/antialias/soroban-abacus-flashcards/commit/8020ee835e2f7e7e6d1b8709c4ef1ce2b8ff9255))
|
||||||
|
* **worksheets:** prevent infinite loop when problem space is empty ([02463df](https://github.com/antialias/soroban-abacus-flashcards/commit/02463df8e505a2cd14d96f6a9301df80356c6818))
|
||||||
|
* **worksheets:** render operators last for proper layering ([cdd0de7](https://github.com/antialias/soroban-abacus-flashcards/commit/cdd0de797f9d712e10f54a314671ce5277c957ad))
|
||||||
|
* **worksheets:** sync preview and download problem generation ([822ef78](https://github.com/antialias/soroban-abacus-flashcards/commit/822ef78e5880de93e2b82952a39630539609e306))
|
||||||
|
* **worksheets:** ten-frames not rendering in mastery mode ([b36df3a](https://github.com/antialias/soroban-abacus-flashcards/commit/b36df3a40cbc57866095d686fa2c0fc9ec30add2))
|
||||||
|
* **worksheets:** validation function was converting mastery mode to manual ([4ad687d](https://github.com/antialias/soroban-abacus-flashcards/commit/4ad687df73365b084115477774e0aada9d102c28))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **abacus-react:** add defaultValue prop for uncontrolled mode ([3ce12c5](https://github.com/antialias/soroban-abacus-flashcards/commit/3ce12c59fc3f8306bb21b19876e6a820e6ddedda))
|
||||||
|
* add 'auto' option for scaffolding to defer to mastery progression ([a945a62](https://github.com/antialias/soroban-abacus-flashcards/commit/a945a620c40661c3ff026fc3568f708744dc27b2))
|
||||||
|
* add adaptive zoom magnifier for Know Your World map ([1e8846c](https://github.com/antialias/soroban-abacus-flashcards/commit/1e8846cdb1de8e557f2ef53eff6014995911f3ce))
|
||||||
|
* add AI-powered worksheet grading with GPT-5 vision ([6e95732](https://github.com/antialias/soroban-abacus-flashcards/commit/6e9573288fdabd12d93589fd0734b000c9462df4))
|
||||||
|
* add auto scaffolding mode with visual feedback and override notices ([b62db5a](https://github.com/antialias/soroban-abacus-flashcards/commit/b62db5a323f803da6b2ad26238735f5d51b4557e))
|
||||||
|
* add auto-submit on correct answer + Newton poem blog post ([2f7cb03](https://github.com/antialias/soroban-abacus-flashcards/commit/2f7cb03c3f463d9c350c9d55200b34fd737bc5b0))
|
||||||
|
* add comprehensive error handling for arcade games ([e8c5256](https://github.com/antialias/soroban-abacus-flashcards/commit/e8c52561a2b881cb6bece0d806720e06cd148c99))
|
||||||
|
* add continent filtering to Know Your World game ([7bb03b8](https://github.com/antialias/soroban-abacus-flashcards/commit/7bb03b84099a10cb48c5b1b4c0bf60ca2e527977))
|
||||||
|
* add custom error boundaries with navigation ([73cc418](https://github.com/antialias/soroban-abacus-flashcards/commit/73cc4185c3fb9fd43fe51f6a47ac7d056590eeb4))
|
||||||
|
* add database schema for custom skills and skill customizations ([906fa63](https://github.com/antialias/soroban-abacus-flashcards/commit/906fa63f24dd0de429c71d9c0220e4901286a2e0))
|
||||||
|
* add debug bounding boxes to magnifier view ([9c7d2fa](https://github.com/antialias/soroban-abacus-flashcards/commit/9c7d2fab5f04a11dc97f6f5db63b91c153aec98d))
|
||||||
|
* add debug indicator for custom crop region (dev only) ([9c89aad](https://github.com/antialias/soroban-abacus-flashcards/commit/9c89aadb17516fb540304813da73a649d5dfb96c))
|
||||||
|
* add detailed zoom decision debug panel ([cb57f15](https://github.com/antialias/soroban-abacus-flashcards/commit/cb57f1585a91ad5379b61af29d2fa788c072bc2a))
|
||||||
|
* add dev-only crop tool for custom map region cropping ([855e5df](https://github.com/antialias/soroban-abacus-flashcards/commit/855e5df2c0dfadc1542b4be25987af4cfe30c735))
|
||||||
|
* add download and share buttons to shared worksheet viewer ([9b8947a](https://github.com/antialias/soroban-abacus-flashcards/commit/9b8947a198671655c0db5c9c43bd7abc86119c64))
|
||||||
|
* add dynamic layout preview component for orientation selection ([8df62d6](https://github.com/antialias/soroban-abacus-flashcards/commit/8df62d6a45b0dc556702b867522e8710307ff733))
|
||||||
|
* add dynamic operator icon to tab navigation ([b6ff995](https://github.com/antialias/soroban-abacus-flashcards/commit/b6ff995a8c73122afb065c1e2a64f59f63722715))
|
||||||
|
* add exponential zoom scaling for sub-pixel regions ([101213b](https://github.com/antialias/soroban-abacus-flashcards/commit/101213ba1c2b378aa63e828f40cdefd698934c1a))
|
||||||
|
* add fancy QR codes with abacus logo throughout app ([ebcabf9](https://github.com/antialias/soroban-abacus-flashcards/commit/ebcabf9bb917f9fd39cb85b5a2c73c696172cbc3))
|
||||||
|
* add give up with zoom animation for Know Your World ([94cff43](https://github.com/antialias/soroban-abacus-flashcards/commit/94cff4374f4b9060339dbb1067fed58009e2dcf9))
|
||||||
|
* add gold scrim overlay and improve precision mode messaging ([4b20d07](https://github.com/antialias/soroban-abacus-flashcards/commit/4b20d0753f887382d42da33987cad2c0ee27103c))
|
||||||
|
* add interactive world map continent selector ([245005c](https://github.com/antialias/soroban-abacus-flashcards/commit/245005c8ece0626136769e5e9fd1961a0db45709))
|
||||||
|
* add Know Your World geography quiz game ([25e24a7](https://github.com/antialias/soroban-abacus-flashcards/commit/25e24a7cbc0b1803d464e987400d0aad1d3ef8cd))
|
||||||
|
* add mobile drawer and detailed summary for shared worksheets ([0a35e70](https://github.com/antialias/soroban-abacus-flashcards/commit/0a35e70e2828c43d57d8d95b592d38a48e1fbf08))
|
||||||
|
* add ngrok tunnel to dev server for HTTPS testing ([ab2bfde](https://github.com/antialias/soroban-abacus-flashcards/commit/ab2bfde9c28fe874d289e21678cf06da61dfa298))
|
||||||
|
* add per-country coloring and individual region clicks to continent selector ([2e9f409](https://github.com/antialias/soroban-abacus-flashcards/commit/2e9f409f26e12f833301954ec39fe7db39715e26))
|
||||||
|
* add per-page worksheet generation API ([6398fbe](https://github.com/antialias/soroban-abacus-flashcards/commit/6398fbead950bc41ad71105866afc677b1ec674a))
|
||||||
|
* add Pointer Lock API for precision mode to prevent edge issues ([4d5953d](https://github.com/antialias/soroban-abacus-flashcards/commit/4d5953d03403adcb8bc964437ba5b819dbaa7696))
|
||||||
|
* add precision controls for tiny regions in Know Your World ([3bf127f](https://github.com/antialias/soroban-abacus-flashcards/commit/3bf127f344c631f5bed3504228b140407a734c06))
|
||||||
|
* add precision mode system with pixel grid visualization ([53e9041](https://github.com/antialias/soroban-abacus-flashcards/commit/53e90414a34f3f719502bc8c8ca2bb7358f8469c))
|
||||||
|
* add prev/next navigation buttons to mixed mode mini skill panes ([498df2c](https://github.com/antialias/soroban-abacus-flashcards/commit/498df2ca5ab04fac8338ddc4d819a212f1a122a5))
|
||||||
|
* add problem space validation to warn about duplicate risk ([0b8c180](https://github.com/antialias/soroban-abacus-flashcards/commit/0b8c1803ffe0392f71d10cddb945ae24a39022e0))
|
||||||
|
* add responsive mobile drawer with draggable settings button ([fc1d7fc](https://github.com/antialias/soroban-abacus-flashcards/commit/fc1d7fcbd60b22f25f817dd7d24a5ad0c33eb63a))
|
||||||
|
* add responsive page button layout with dynamic dropdown ([3f33cd1](https://github.com/antialias/soroban-abacus-flashcards/commit/3f33cd1924deffee0f215e6a463016e76784f77c))
|
||||||
|
* add shared worksheet viewer with open-in-editor functionality ([4b8b3ee](https://github.com/antialias/soroban-abacus-flashcards/commit/4b8b3ee5328d3c6e1d6b4fe4624ea553e5505ab7))
|
||||||
|
* add single-page worksheet preview API endpoint ([10e97db](https://github.com/antialias/soroban-abacus-flashcards/commit/10e97db78a25c83f1bda46abaae6ad45cff712f1))
|
||||||
|
* add skill configuration system with interactive 2D difficulty plot ([7fbc743](https://github.com/antialias/soroban-abacus-flashcards/commit/7fbc743c4c213866a36e758eaf9b49200ea79f13)), closes [#9333](https://github.com/antialias/soroban-abacus-flashcards/issues/9333) [#10b981](https://github.com/antialias/soroban-abacus-flashcards/issues/10b981)
|
||||||
|
* add smooth fade-in animation for 404 message text changes ([e88380a](https://github.com/antialias/soroban-abacus-flashcards/commit/e88380a48df4c4ee132482d3c45612b336508cab))
|
||||||
|
* add split-action share button with copy shortcut ([085d200](https://github.com/antialias/soroban-abacus-flashcards/commit/085d200da4d726148a027181b10707d77e88af7a))
|
||||||
|
* add themed backgrounds and enhanced styling to 404 page ([dd14062](https://github.com/antialias/soroban-abacus-flashcards/commit/dd14062112d0b3e29fc03c873ff434b1fdf0ae88))
|
||||||
|
* add visible grab tab to worksheet panel resize handle ([288e6ed](https://github.com/antialias/soroban-abacus-flashcards/commit/288e6ed878541fe06bb28d7c00008e1830db19b6))
|
||||||
|
* add visual debugging for zoom importance scoring ([e60a2c0](https://github.com/antialias/soroban-abacus-flashcards/commit/e60a2c09c0e843af9a5a82433493ccf499660981))
|
||||||
|
* add visual grab tab to resize handle with rounded corners ([6e55d5a](https://github.com/antialias/soroban-abacus-flashcards/commit/6e55d5add7cc916e5caaeb49927ecef38ef5bbf9))
|
||||||
|
* add visual warnings to page selector buttons ([5a87799](https://github.com/antialias/soroban-abacus-flashcards/commit/5a8779969c17c948a822cc1ecb636f770bb6d9e3))
|
||||||
|
* add worksheet generation core logic and helpers ([163517d](https://github.com/antialias/soroban-abacus-flashcards/commit/163517db7d9f0818c0034d6c20908d3fac5ab815))
|
||||||
|
* add worksheet sharing infrastructure with database persistence ([7b4c7c3](https://github.com/antialias/soroban-abacus-flashcards/commit/7b4c7c3fb62310e892792220f76c750bcee3cf05))
|
||||||
|
* add worksheet studio with comprehensive features ([d5672bd](https://github.com/antialias/soroban-abacus-flashcards/commit/d5672bdddf9ad557eaa76ad8d7e9e1ce1cb7ee30))
|
||||||
|
* apply skill-specific scaffolding and fix mini card heights ([ee90182](https://github.com/antialias/soroban-abacus-flashcards/commit/ee90182ff2b2e9247a38ad464fc25e646e9b8cf0))
|
||||||
|
* **blog:** add subtraction and multi-digit worksheet blog posts ([dd9587f](https://github.com/antialias/soroban-abacus-flashcards/commit/dd9587f8cde6fbc129ddb315dde8a27564108514))
|
||||||
|
* calculate zoom based on region under cursor, target 15% area ([6736336](https://github.com/antialias/soroban-abacus-flashcards/commit/6736336317b587214db5109cee5a3cc35ef78b29))
|
||||||
|
* convert operator selection to checkboxes with required validation ([c997c4a](https://github.com/antialias/soroban-abacus-flashcards/commit/c997c4a7ba81faf5c8970963b692f4e31bacfa7e))
|
||||||
|
* create unified difficulty interface with 2-tab selector ([0b7382f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b7382f1b652a01ac9edb851029c4f98005d0071))
|
||||||
|
* enable production source maps for easier debugging ([d992e98](https://github.com/antialias/soroban-abacus-flashcards/commit/d992e98d77d453a70f60ac8d2801af6f29b0ab3d))
|
||||||
|
* enhance scaffolding tab with live preview and resolved display rules ([9a5a0d4](https://github.com/antialias/soroban-abacus-flashcards/commit/9a5a0d4e3c3b9f209f83856b62283df04859833a))
|
||||||
|
* **help-system:** add focus areas for skills needing reinforcement ([871390d](https://github.com/antialias/soroban-abacus-flashcards/commit/871390d8e1b55ab78e7cc537e9127a336ee5f462))
|
||||||
|
* **help-system:** add schema for progressive help and feedback loop ([41c4603](https://github.com/antialias/soroban-abacus-flashcards/commit/41c46038d8c1b69254206b14d76d420f41f4d248))
|
||||||
|
* **help-system:** add usePracticeHelp hook and skill extraction ([0b1ad1f](https://github.com/antialias/soroban-abacus-flashcards/commit/0b1ad1f896e81357fa1cccec4b2d5a606d777321))
|
||||||
|
* **help-system:** integrate PracticeHelpPanel into ActiveSession ([373ec34](https://github.com/antialias/soroban-abacus-flashcards/commit/373ec34e4649130c368c4ce193c8066c56be9744))
|
||||||
|
* hide easter egg hint until first discovery ([c2c7153](https://github.com/antialias/soroban-abacus-flashcards/commit/c2c71531ae4298b18df8f2c1347968af144f8e50))
|
||||||
|
* implement binary search for optimal zoom level ([1a54f09](https://github.com/antialias/soroban-abacus-flashcards/commit/1a54f0981446c6b81b0a572e0b64e6be03e2f9a3))
|
||||||
|
* implement fit-crop-with-fill for custom map crops ([b6569ed](https://github.com/antialias/soroban-abacus-flashcards/commit/b6569ed4e125265facd5ba940fc5d184babb0ae1))
|
||||||
|
* implement lazy loading for worksheet preview with cursor pagination ([8b3d019](https://github.com/antialias/soroban-abacus-flashcards/commit/8b3d0196523ec9fdf2b9a6bbee8c54c8493a49db))
|
||||||
|
* implement lazy loading for worksheet preview with cursor pagination ([2a7d67d](https://github.com/antialias/soroban-abacus-flashcards/commit/2a7d67db5889f742ef4f16e790ab7892d13c014c))
|
||||||
|
* improve shared worksheet viewer UX and multi-page support ([1c10a82](https://github.com/antialias/soroban-abacus-flashcards/commit/1c10a82c7885962f05e06822b5b99a09fcf1e15d))
|
||||||
|
* improve tab navigation layout and add pages to layout button ([926a029](https://github.com/antialias/soroban-abacus-flashcards/commit/926a029ff82503179912e1cec17bf6458396f127))
|
||||||
|
* improve worksheet preview placeholder with cartoonish grid layout ([57fb99a](https://github.com/antialias/soroban-abacus-flashcards/commit/57fb99af635687c459b2298e89f4826185d356f1))
|
||||||
|
* increase max super zoom to 120x for ultra-tiny regions ([9b782be](https://github.com/antialias/soroban-abacus-flashcards/commit/9b782beabf2a9fc34b55c396164ab410930890db))
|
||||||
|
* increase max zoom to 1000x with detailed debug logging ([a6be05f](https://github.com/antialias/soroban-abacus-flashcards/commit/a6be05f8c1167d1175ef7d7b1d0e239afaebbf9b))
|
||||||
|
* **know-your-world:** add 'H' keyboard shortcut for hint ([cdc9451](https://github.com/antialias/soroban-abacus-flashcards/commit/cdc94514d9f6eb1865bd0b64c17f5e57affb0a5b))
|
||||||
|
* **know-your-world:** add adaptive hint cycling for struggling users ([5440250](https://github.com/antialias/soroban-abacus-flashcards/commit/54402501e594f802b27bbccd724e5f5262bdebd1))
|
||||||
|
* **know-your-world:** add celebration animations for found regions ([3b9d6b0](https://github.com/antialias/soroban-abacus-flashcards/commit/3b9d6b0fdf17518cfe6325105bdd9f7996185344))
|
||||||
|
* **know-your-world:** add device capability hooks and improve mobile support ([c502a4f](https://github.com/antialias/soroban-abacus-flashcards/commit/c502a4fa926b92d2a16d8e31e7e55243752d80d8))
|
||||||
|
* **know-your-world:** add drill-down map selector and improve setup UI ([a6f8dbe](https://github.com/antialias/soroban-abacus-flashcards/commit/a6f8dbe474fd909a48183905cafc9ccb8f1ccfa7))
|
||||||
|
* **know-your-world:** add filter tabs for size, importance, and population ([6c3c0ac](https://github.com/antialias/soroban-abacus-flashcards/commit/6c3c0ac70e58fa4fa678508d1ea37a163a2d875d))
|
||||||
|
* **know-your-world:** add fire tracer animation for learning mode takeover ([1e6153e](https://github.com/antialias/soroban-abacus-flashcards/commit/1e6153ee8bb53469aec515a20e2cf14450e9d67a))
|
||||||
|
* **know-your-world:** add hint system, pointer lock buttons, and mobile magnifier support ([55e480c](https://github.com/antialias/soroban-abacus-flashcards/commit/55e480c03b710a9c244ef5c6b3372b9adb78637c))
|
||||||
|
* **know-your-world:** add hints for Europe and Africa regions ([46e5c6b](https://github.com/antialias/soroban-abacus-flashcards/commit/46e5c6b99bce5a07ddf050aed56cf470f8610e89))
|
||||||
|
* **know-your-world:** add hot/cold audio feedback for cursor proximity ([69813e9](https://github.com/antialias/soroban-abacus-flashcards/commit/69813e92a256f3c78920929eab419accfc4abcd3))
|
||||||
|
* **know-your-world:** add hot/cold debug panel and production debug mode ([493313a](https://github.com/antialias/soroban-abacus-flashcards/commit/493313a3bb47d145ad437143834d71ea6dcf6341))
|
||||||
|
* **know-your-world:** add hot/cold feedback for mobile magnifier ([824325b](https://github.com/antialias/soroban-abacus-flashcards/commit/824325b843c7356b3b7d14ee105fe66edd04cd1f))
|
||||||
|
* **know-your-world:** add interaction state machine foundation ([e4d6748](https://github.com/antialias/soroban-abacus-flashcards/commit/e4d6748d70c9d6c6cf705f95183713611f57e871))
|
||||||
|
* **know-your-world:** add Learning mode and fix hints before name unlock ([fc87808](https://github.com/antialias/soroban-abacus-flashcards/commit/fc87808b40578054f0196a5d68ab35f56d375585))
|
||||||
|
* **know-your-world:** add learning mode takeover animation and fix give-up sequence ([3fd8472](https://github.com/antialias/soroban-abacus-flashcards/commit/3fd8472e6832fa16dd83b9ae1ed7b8b92baa5f04))
|
||||||
|
* **know-your-world:** add map zoom preview, remove study time feature ([57dd61b](https://github.com/antialias/soroban-abacus-flashcards/commit/57dd61b99461ff36983231faa9e105f4b22215ec))
|
||||||
|
* **know-your-world:** add missing island hints and revise all hints ([8b13b5a](https://github.com/antialias/soroban-abacus-flashcards/commit/8b13b5a455cee09dcf6938e04facab7f674f2cb8))
|
||||||
|
* **know-your-world:** add mobile cursor sharing and fix multi-device coop mode ([2ce5e18](https://github.com/antialias/soroban-abacus-flashcards/commit/2ce5e180b763434efa495af252f39e47d9723ebf))
|
||||||
|
* **know-your-world:** add mobile virtual keyboard and space-skipping ([5318d0d](https://github.com/antialias/soroban-abacus-flashcards/commit/5318d0dd8903b2fad9d9c315a79a39c13acc7573))
|
||||||
|
* **know-your-world:** add multiplayer cursor sharing and fix map viewport ([c3b94be](https://github.com/antialias/soroban-abacus-flashcards/commit/c3b94bea3d43dfdd022d27974c679f055ec39043))
|
||||||
|
* **know-your-world:** add puzzle piece fly-to-map animation for learning mode ([7c49652](https://github.com/antialias/soroban-abacus-flashcards/commit/7c496525e91299ead391eccfe0e83f886e120aaa))
|
||||||
|
* **know-your-world:** add range thermometer for region size selection ([c7c4e7c](https://github.com/antialias/soroban-abacus-flashcards/commit/c7c4e7cef3ddb8af54826992f4a94b97b63e4698))
|
||||||
|
* **know-your-world:** add region shape silhouette to learning takeover ([ebe07e3](https://github.com/antialias/soroban-abacus-flashcards/commit/ebe07e358f9f5642f662d7918e3c1893f48303ee))
|
||||||
|
* **know-your-world:** add session-based give-up voting and fix cursor emojis ([bb2d6fc](https://github.com/antialias/soroban-abacus-flashcards/commit/bb2d6fc7d80632ad960dad2ea70a6ee792d0882e))
|
||||||
|
* **know-your-world:** add speech announcements and compass-style crosshairs ([e0b762e](https://github.com/antialias/soroban-abacus-flashcards/commit/e0b762e3ee88771009ede39622a6722b4e366ce2))
|
||||||
|
* **know-your-world:** add speech synthesis for hints with auto-hint/auto-speak ([cd841ff](https://github.com/antialias/soroban-abacus-flashcards/commit/cd841ff7dc3e04eb68b39b712ad8e80d73b27c8d))
|
||||||
|
* **know-your-world:** add Strudel-based music system ([7dab07b](https://github.com/antialias/soroban-abacus-flashcards/commit/7dab07b3a73817e2900f74e928452d9685ad6a20))
|
||||||
|
* **know-your-world:** add SVG path geometry helpers for future use ([ea141f0](https://github.com/antialias/soroban-abacus-flashcards/commit/ea141f04f6bf5286369f8e67391ad9812fa05448))
|
||||||
|
* **know-your-world:** add turn-based restrictions for letter typing ([45730bb](https://github.com/antialias/soroban-abacus-flashcards/commit/45730bb4db3f3c83f02188ab5906f80b1abe3467))
|
||||||
|
* **know-your-world:** align guidance UI with assistance levels ([7e7a8dc](https://github.com/antialias/soroban-abacus-flashcards/commit/7e7a8dc1e8577ffabee9d7853200b4aad1926d82))
|
||||||
|
* **know-your-world:** auto-enable hot/cold for learning mode ([dcc32c2](https://github.com/antialias/soroban-abacus-flashcards/commit/dcc32c288fe63317e57a4783afa5e93f73dc4f19))
|
||||||
|
* **know-your-world:** enhance hint audio and region name display ([e6f58bf](https://github.com/antialias/soroban-abacus-flashcards/commit/e6f58bfd93a849fea3642d81a770f615fd88bc1f))
|
||||||
|
* **know-your-world:** fix magnifier outline aspect ratio and add visual debug toggle ([ac915f2](https://github.com/antialias/soroban-abacus-flashcards/commit/ac915f2065736b37c97f5847e977bc5152c8a7ca))
|
||||||
|
* **know-your-world:** full-screen layout with squish-through pointer lock escape ([1729418](https://github.com/antialias/soroban-abacus-flashcards/commit/1729418dc5673c01a8c77bd653d78f7aafda054f))
|
||||||
|
* **know-your-world:** implement empirical scale measurement for 1:1 magnifier tracking ([39886e8](https://github.com/antialias/soroban-abacus-flashcards/commit/39886e859ca64967ca073e8172c4c8c8873b6102))
|
||||||
|
* **know-your-world:** improve magnifier UX and hide abacus on games ([fa1514d](https://github.com/antialias/soroban-abacus-flashcards/commit/fa1514d351d90010a91e73f5c18fb23115154162))
|
||||||
|
* **know-your-world:** improve mobile magnifier controls and animations ([4449fb1](https://github.com/antialias/soroban-abacus-flashcards/commit/4449fb19b4b66d18167bf9f10eb1364471d63535))
|
||||||
|
* **know-your-world:** improve mobile magnifier with adaptive zoom and select button ([60cf98e](https://github.com/antialias/soroban-abacus-flashcards/commit/60cf98e77a901c42210833c7b59350d28501eb52))
|
||||||
|
* **know-your-world:** improve region size filter layout ([558d369](https://github.com/antialias/soroban-abacus-flashcards/commit/558d369ba05f5822165d314c61d6c4eaff68f8f6))
|
||||||
|
* **know-your-world:** improve setup screen UX ([dc4d621](https://github.com/antialias/soroban-abacus-flashcards/commit/dc4d62195b52fce1b584f6cc9c404ba6ceec2a27))
|
||||||
|
* **know-your-world:** improve takeover UI and fix celebration sound bug ([a8c6b84](https://github.com/antialias/soroban-abacus-flashcards/commit/a8c6b848551e9d2751c702525072c193e8bbd69f))
|
||||||
|
* **know-your-world:** live crop updates and safe zone improvements ([3f4691e](https://github.com/antialias/soroban-abacus-flashcards/commit/3f4691e8a3401058014d3e729827ec46dfcd08fd))
|
||||||
|
* **know-your-world:** make magnifier lazy - only move when cursor obscured ([ac82564](https://github.com/antialias/soroban-abacus-flashcards/commit/ac82564eacec8d3ea4686d4ca3c6132ed7be0342))
|
||||||
|
* **know-your-world:** make magnifier size responsive to aspect ratio ([5920cb4](https://github.com/antialias/soroban-abacus-flashcards/commit/5920cb4dc3c2e0aa611d3d770ea5d0220e3413ae))
|
||||||
|
* **know-your-world:** match setup phase map positioning with gameplay ([b030558](https://github.com/antialias/soroban-abacus-flashcards/commit/b0305581f90c8c6751b2ac84b02d5e1b05386c6e))
|
||||||
|
* **know-your-world:** move region size filters inside map preview ([81301ab](https://github.com/antialias/soroban-abacus-flashcards/commit/81301ab1484247e905f05faba81862d63256b5bd))
|
||||||
|
* **know-your-world:** move start button below settings controls ([a05c4ca](https://github.com/antialias/soroban-abacus-flashcards/commit/a05c4ca5bf52ad5a0b807a7b8702cd5ce0b3a6ef))
|
||||||
|
* **know-your-world:** Phase 2 - integrate useMagnifierZoom hook ([8ce878d](https://github.com/antialias/soroban-abacus-flashcards/commit/8ce878d03ef9cc543dc0c14185c75008ea0d7d1a))
|
||||||
|
* **know-your-world:** responsive setup + travel-themed start button ([02762fa](https://github.com/antialias/soroban-abacus-flashcards/commit/02762fad81dcc71ece14f9cc463812f85c1cc275))
|
||||||
|
* **know-your-world:** separate region filtering from assistance level ([9499e4e](https://github.com/antialias/soroban-abacus-flashcards/commit/9499e4e8b51ea48aac067473e36d469f62e2b9b1))
|
||||||
|
* **know-your-world:** show magnifier on mobile drag gesture ([a02a710](https://github.com/antialias/soroban-abacus-flashcards/commit/a02a7108e9825bb7de5f72ae426d1c995ef66422))
|
||||||
|
* **know-your-world:** speak country names in user's locale ([426a1e6](https://github.com/antialias/soroban-abacus-flashcards/commit/426a1e68687da1f4bbf84aa855004571892f60f8))
|
||||||
|
* **know-your-world:** sync letter confirmation across multiplayer sessions ([655660f](https://github.com/antialias/soroban-abacus-flashcards/commit/655660f7cfd61d3d464176d06e08267c7afb9c80))
|
||||||
|
* **know-your-world:** unified region selector with inline list on desktop ([d329d80](https://github.com/antialias/soroban-abacus-flashcards/commit/d329d803997bb25e73b833e692306d34f77bc0b1))
|
||||||
|
* **know-your-world:** unify setup and gameplay UI positions ([141a506](https://github.com/antialias/soroban-abacus-flashcards/commit/141a50673941b4a85471626b1a01ea85fffa9d2e))
|
||||||
|
* **know-your-world:** unify setup UI positions with gameplay ([c1a0485](https://github.com/antialias/soroban-abacus-flashcards/commit/c1a0485b1d5421c09afec480664261e033bc22fa))
|
||||||
|
* **know-your-world:** wire interaction state machine to MapRenderer ([7e55953](https://github.com/antialias/soroban-abacus-flashcards/commit/7e55953eeec79be431e3f8f643e589322946de0c))
|
||||||
|
* make 404 page abacus hero-sized and responsive ([41de252](https://github.com/antialias/soroban-abacus-flashcards/commit/41de25238f762b1ccb27500ca3b6a1f105ce7eaa))
|
||||||
|
* make resize handle grab tab fully draggable with rounded corners ([be40f70](https://github.com/antialias/soroban-abacus-flashcards/commit/be40f70bc6dba40ee0a1e6cdfb75c1833943bccb))
|
||||||
|
* make scaffolding and preview collapsible ([804fb1a](https://github.com/antialias/soroban-abacus-flashcards/commit/804fb1a2f65e647919e2c6eb0bd0d83763b65f0e))
|
||||||
|
* make super zoom threshold configurable and increase to 3px ([d7ce474](https://github.com/antialias/soroban-abacus-flashcards/commit/d7ce474a517c3690f92a077999377b59c314e7f8))
|
||||||
|
* make zoom transitions 4x slower for smoother experience ([ca752bd](https://github.com/antialias/soroban-abacus-flashcards/commit/ca752bd0aa073927b5c4d85d379002cb049a505f))
|
||||||
|
* move difficulty parameters into Smart mode ([4b66758](https://github.com/antialias/soroban-abacus-flashcards/commit/4b667587f826ae68d81da7d7708d67b6362bfc51))
|
||||||
|
* move layout controls to OrientationPanel with toggles ([995966f](https://github.com/antialias/soroban-abacus-flashcards/commit/995966ffbc5c745a938fff0f7e1420fd6ff5c471))
|
||||||
|
* operator-specific scaffolding for mixed mastery mode ([4d7d000](https://github.com/antialias/soroban-abacus-flashcards/commit/4d7d0000468661cfb66d6030e96cb77d23907b0e))
|
||||||
|
* optimize problem generation and add duplicate warning system ([11c46c1](https://github.com/antialias/soroban-abacus-flashcards/commit/11c46c1b44f369ff568414c84acec54540386622))
|
||||||
|
* pause zoom animation at precision mode threshold ([c4989b3](https://github.com/antialias/soroban-abacus-flashcards/commit/c4989b3ab0058a77b3c0cf9c54bfe9dde7935a9c))
|
||||||
|
* pause/resume zoom animation at precision mode threshold ([bdf59e5](https://github.com/antialias/soroban-abacus-flashcards/commit/bdf59e571d4fe515c3a4990bcdc4ed2f6ee70d19))
|
||||||
|
* pause/resume zoom animation at precision mode threshold ([4687820](https://github.com/antialias/soroban-abacus-flashcards/commit/4687820d8a7088c6ee4e2a21188db5d6e991e4dc))
|
||||||
|
* persist seed and prngAlgorithm for exact problem reproducibility ([8cb2209](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb2209d8406fc9a62298e4aef3f5e19f5a8ef2c))
|
||||||
|
* **practice:** add dark mode support and fix doubled answer digits ([026993c](https://github.com/antialias/soroban-abacus-flashcards/commit/026993cb05e74ee7f580c972ae7e92db74ce1c54))
|
||||||
|
* **practice:** add progressive help overlay with proper positioning ([9a4ab82](https://github.com/antialias/soroban-abacus-flashcards/commit/9a4ab8296ed5d28dc4e9cb2fbd1be4c50eb251f7))
|
||||||
|
* **practice:** add session HUD with tape-deck controls and PageWithNav ([b19c6d0](https://github.com/antialias/soroban-abacus-flashcards/commit/b19c6d0eca8331983990f070e704cd9249824265))
|
||||||
|
* **practice:** add smooth problem transition animation ([b12112e](https://github.com/antialias/soroban-abacus-flashcards/commit/b12112e8da30d2e335cefef9f3c26eab77ae919b))
|
||||||
|
* **practice:** add student onboarding and offline sync features ([b52f054](https://github.com/antialias/soroban-abacus-flashcards/commit/b52f0547afaf72104b893496cac4a0092cb07ec6))
|
||||||
|
* **practice:** add three-part daily practice session system ([5855438](https://github.com/antialias/soroban-abacus-flashcards/commit/585543809afe7b84f01a7ff644a30f35c2b6c1c4))
|
||||||
|
* **practice:** improve help UX with coach hints and simplified UI ([19169ad](https://github.com/antialias/soroban-abacus-flashcards/commit/19169ad9feff297a08c59077d3c2fc3b0c8fdf99))
|
||||||
|
* **practice:** integrate progressive help with decomposition display ([804d937](https://github.com/antialias/soroban-abacus-flashcards/commit/804d937dd989a2feb9a26330b2d7ded96765b106))
|
||||||
|
* redesign shared worksheet viewer with read-only studio and proper error handling ([23dccc0](https://github.com/antialias/soroban-abacus-flashcards/commit/23dccc0ef3a81be2c2334c78b5bc9b5424e7332e))
|
||||||
|
* remove all easter egg hints from 404 page ([1756182](https://github.com/antialias/soroban-abacus-flashcards/commit/17561829efa4831077cd927a64bc2b62fc025c55))
|
||||||
|
* remove redundant navigation buttons from 404 page ([e5262e5](https://github.com/antialias/soroban-abacus-flashcards/commit/e5262e50071a6c003160f1f77adcfbbea75e8598))
|
||||||
|
* show magnifier only when current target region needs magnification ([996c973](https://github.com/antialias/soroban-abacus-flashcards/commit/996c973774286768952454c369dff2b37d875833))
|
||||||
|
* show magnifier only when target region needs it ([c6997ac](https://github.com/antialias/soroban-abacus-flashcards/commit/c6997ac9a7122f415c85eef388a543e7c44337f6))
|
||||||
|
* show visual feedback for auto-resolved scaffolding values ([fbe776a](https://github.com/antialias/soroban-abacus-flashcards/commit/fbe776ac0978639af79ab256989252b58472f682))
|
||||||
|
* smooth cursor dampening transitions with react-spring ([66544dc](https://github.com/antialias/soroban-abacus-flashcards/commit/66544dc7dd0d573151a0c924c8a671939868a971))
|
||||||
|
* **thermometer:** add "only" buttons to quickly select single category ([623f882](https://github.com/antialias/soroban-abacus-flashcards/commit/623f882075f03d4dfa7cd823974f9c3f773d3b0b))
|
||||||
|
* **worksheets:** add 3x scale effect to thrown dice ([920a855](https://github.com/antialias/soroban-abacus-flashcards/commit/920a855eb5f5b4415d7d8acdc5669c0d31a927d0))
|
||||||
|
* **worksheets:** add draggable dice easter egg with physics ([b8e66df](https://github.com/antialias/soroban-abacus-flashcards/commit/b8e66dfc17c359066b9e1bde656d2edc32420294))
|
||||||
|
* **worksheets:** add duplicate risk warnings to page selector UI ([1d8dceb](https://github.com/antialias/soroban-abacus-flashcards/commit/1d8dceb55b10d00127f7cf624fd279acd1f00e1d))
|
||||||
|
* **worksheets:** add foundational steps to progression path ([7e6f99b](https://github.com/antialias/soroban-abacus-flashcards/commit/7e6f99b78c9162e5004402dadd00e7cdc6fc684c))
|
||||||
|
* **worksheets:** add QR codes with share codes for easy worksheet sharing ([a0e73d9](https://github.com/antialias/soroban-abacus-flashcards/commit/a0e73d971bb1a6994d300ddf9b7717d53076b05f))
|
||||||
|
* **worksheets:** add shuffle button with animated dice icon ([f97efb5](https://github.com/antialias/soroban-abacus-flashcards/commit/f97efb5c94ca00bf7b9fbaa48d65981f2d1766a1))
|
||||||
|
* **worksheets:** add viewport edge ricochet to dice physics ([c6db7dc](https://github.com/antialias/soroban-abacus-flashcards/commit/c6db7dcfa2a6f718201b65c3ace6aa5bb85fbb05))
|
||||||
|
* **worksheets:** enhance dice throw physics for natural feel ([047a960](https://github.com/antialias/soroban-abacus-flashcards/commit/047a96056734418f0c205098eba4a64490927557))
|
||||||
|
* **worksheets:** restore mastery progression UI with 3-way mode selector ([26a0885](https://github.com/antialias/soroban-abacus-flashcards/commit/26a08859d795a4d7b3643756cb2a8d64a56bf6dc))
|
||||||
|
* **worksheets:** smooth dice rotation settle to final face ([d00c707](https://github.com/antialias/soroban-abacus-flashcards/commit/d00c70750e4b9b01abb97dc7d668f782503a9dbd))
|
||||||
|
* **worksheets:** upgrade to 3D dice with random rotation animation ([3cd5e49](https://github.com/antialias/soroban-abacus-flashcards/commit/3cd5e4992bed87ecf5f87dd30973811b71b8e99d))
|
||||||
|
|
||||||
|
|
||||||
|
### Performance Improvements
|
||||||
|
|
||||||
|
* add spatial filtering to skip distant regions ([8cb4c88](https://github.com/antialias/soroban-abacus-flashcards/commit/8cb4c88bef6688dd9fe7364545878b5b181f7257))
|
||||||
|
* cache polygon conversions to fix performance regression ([348ce8f](https://github.com/antialias/soroban-abacus-flashcards/commit/348ce8f3146c2728c6f8a0bb19d85743de34ba10))
|
||||||
|
* **know-your-world:** memoize state machine return value and remove debug logging ([d85b976](https://github.com/antialias/soroban-abacus-flashcards/commit/d85b976f8b3d6a26e2e0b2d1b6cdb23ccda93445))
|
||||||
|
* reduce retry limit from 3000 to 100 in problem generators ([08fef59](https://github.com/antialias/soroban-abacus-flashcards/commit/08fef59cc5d5af788495a96d30580c6ff8f13ee9))
|
||||||
|
|
||||||
|
|
||||||
|
### Reverts
|
||||||
|
|
||||||
|
* **know-your-world:** undo premature extractions, restore working state ([f0bf205](https://github.com/antialias/soroban-abacus-flashcards/commit/f0bf2050d3500de38ac776e026179b7e31fc28c8))
|
||||||
|
* remove ngrok and LAN IP detection ([0040b57](https://github.com/antialias/soroban-abacus-flashcards/commit/0040b578296b061d5795df220162970d37edd156))
|
||||||
|
|
||||||
# [2.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.13.2...abacus-react-v2.14.0) (2025-11-08)
|
# [2.14.0](https://github.com/antialias/soroban-abacus-flashcards/compare/abacus-react-v2.13.2...abacus-react-v2.14.0) (2025-11-08)
|
||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue