Thomas Hallock
fb0abcef27
feat(vision): add modular quad detection with opencv-react
...
- Add quad-test page for testing quadrilateral detection
- Add modular quadDetector.ts with createQuadDetector(cv) factory
- Add quadTracker.ts for temporal stability tracking
- Add OpenCV types and lazy loader modules
- Add opencv-react and @techstark/opencv-js dependencies
- Add useOpenCV and useQuadDetection hooks
- Add various loader test pages for debugging OpenCV loading
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 11:12:30 -06:00
Thomas Hallock
830a48e74f
feat(worksheet-parsing): add selective re-parsing and improve UI
...
Selective Re-parsing:
- Add parse-selected API endpoint for re-parsing specific problems
- Support user-adjusted bounding boxes that persist across re-parses
- Add crop-utils for extracting problem regions from worksheet images
LLM Metadata Tracking:
- Store JSON schema, prompt, and raw response in database
- Add debug panel in PhotoViewerEditor to inspect LLM details
- Add migrations for llm_metadata, llm_prompt, llm_json_schema columns
UI Improvements:
- Remove selection mode toggle - problems always selectable
- Show checkboxes on hover only (no layout jump)
- Move selection toolbar to fixed footer outside scrollable area
- Add BoundingBoxOverlay component for visual problem selection
- Add EditableProblemRow with hover-based checkbox visibility
- Unified hover highlighting across checkbox and problem cells
Also includes:
- Fix approve route to handle excluded problems correctly
- Add DebugContentModal for viewing prompts/responses
- Update LLM client to return metadata in responses
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 20:41:09 -06:00
Thomas Hallock
8be19958af
fix(docker): override canvas with mock package for Alpine/musl
...
canvas is an optional peer dep of jsdom that fails to compile on Alpine
due to missing <cstdint> includes in canvas 3.x. Override it with
canvas-mock which provides a stub implementation with no native deps.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 12:39:30 -06:00
semantic-release-bot
ff1964b069
chore(release): 4.68.0 [skip ci]
...
## [4.68.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.68.0 ) (2025-10-23)
### Features
* **arcade:** auto-create room when user has none ([ff88c3a ](ff88c3a1b8 ))
* **create-room:** replace hardcoded game grid with dynamic Radix Select dropdown ([83d0ba2 ](83d0ba26f5 ))
* **room-share:** add QR code button for easy mobile joining ([349290a ](349290ac6a ))
### Bug Fixes
* **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee ](e1258ee041 ))
* **qr-button:** improve layout and z-index ([646a422 ](646a4228d0 ))
* **qr-button:** increase mini QR code size to 80px ([61ac737 ](61ac7378bd ))
* **qr-button:** increase mini QR code to 84px ([3fae5ea ](3fae5ea6fa ))
* **qr-button:** make button square and increase QR size ([dc2d466 ](dc2d46663b ))
* **qr-button:** match height of stacked buttons ([81f202d ](81f202d215 ))
* **room-info:** hide Leave Room button when user is alone ([5927f61 ](5927f61c3c ))
### Documentation
* update workflow to require manual testing before commits ([0991796 ](0991796f1e ))
2025-10-23 15:37:15 +00:00
semantic-release-bot
2004835bc8
chore(release): 4.67.2 [skip ci]
...
## [4.67.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.1...v4.67.2 ) (2025-10-23)
### Bug Fixes
* **complement-race:** prevent delivery move thrashing in steam sprint mode ([e1258ee ](e1258ee041 ))
2025-10-23 13:47:26 +00:00
semantic-release-bot
09df96922e
chore(release): 4.67.1 [skip ci]
...
## [4.67.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.67.0...v4.67.1 ) (2025-10-22)
### Bug Fixes
* **complement-race:** fix react-spring interpolation TypeScript errors ([0add9e4 ](0add9e4ef1 ))
2025-10-22 19:06:35 +00:00
semantic-release-bot
3eb85d7d72
chore(release): 4.67.0 [skip ci]
...
## [4.67.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.2...v4.67.0 ) (2025-10-22)
### Features
* **complement-race:** add react-spring animations to ghost trains for smooth movement ([eb3700a ](eb3700a57d ))
2025-10-22 18:52:16 +00:00
semantic-release-bot
e6c12e87e4
chore(release): 4.66.2 [skip ci]
...
## [4.66.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.1...v4.66.2 ) (2025-10-22)
### Bug Fixes
* **complement-race:** fix ghost train position update lag and reload position reset ([ad78a65 ](ad78a65ed7 ))
2025-10-22 18:44:19 +00:00
semantic-release-bot
79bc0e4c80
chore(release): 4.66.1 [skip ci]
...
## [4.66.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.66.0...v4.66.1 ) (2025-10-22)
### Bug Fixes
* **complement-race:** ensure continuous position broadcasting during train movement ([df60824 ](df60824f37 ))
2025-10-22 18:14:21 +00:00
semantic-release-bot
543675340d
chore(release): 4.66.0 [skip ci]
...
## [4.66.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.65.1...v4.66.0 ) (2025-10-22)
### Features
* **complement-race:** implement per-car adaptive opacity for ghost trains ([9b1d47d ](9b1d47d4c7 ))
2025-10-22 18:07:48 +00:00
semantic-release-bot
659464d3b4
chore(release): 4.65.1 [skip ci]
...
## [4.65.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.65.0...v4.65.1 ) (2025-10-22)
### Bug Fixes
* **complement-race:** use sendMove with correct parameters for position updates ([06cd94b ](06cd94b24c ))
2025-10-22 17:43:07 +00:00
semantic-release-bot
ada0becee5
chore(release): 4.65.0 [skip ci]
...
## [4.65.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.2...v4.65.0 ) (2025-10-22)
### Features
* **complement-race:** implement position broadcasting for ghost trains ([c5fba5b ](c5fba5b7dd ))
2025-10-22 17:09:44 +00:00
semantic-release-bot
c5bfcf990a
chore(release): 4.64.2 [skip ci]
...
## [4.64.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.1...v4.64.2 ) (2025-10-22)
### Bug Fixes
* **complement-race:** use individual player positions for ghost trains ([00dc4b1 ](00dc4b1d06 ))
2025-10-22 16:22:55 +00:00
semantic-release-bot
76063884af
chore(release): 4.64.1 [skip ci]
...
## [4.64.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.64.0...v4.64.1 ) (2025-10-22)
### Bug Fixes
* **complement-race:** use local player instead of first player for train display ([915d8a5 ](915d8a5343 ))
2025-10-22 16:15:59 +00:00
semantic-release-bot
106b348585
chore(release): 4.64.0 [skip ci]
...
## [4.64.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.11...v4.64.0 ) (2025-10-22)
### Features
* **complement-race:** add ghost trains for multiplayer visibility ([7668cc9 ](7668cc9b11 ))
2025-10-22 16:01:11 +00:00
semantic-release-bot
93527e6e0b
chore(release): 4.63.11 [skip ci]
...
## [4.63.11](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.10...v4.63.11 ) (2025-10-22)
### Bug Fixes
* **complement-race:** actually filter by isActive instead of just id ([ef4ca57 ](ef4ca57a6c ))
2025-10-22 15:49:53 +00:00
semantic-release-bot
095221564f
chore(release): 4.63.10 [skip ci]
...
## [4.63.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.9...v4.63.10 ) (2025-10-22)
### Bug Fixes
* **complement-race:** show only first active player's passengers on train ([2bfd5d2 ](2bfd5d2bda ))
2025-10-22 15:46:43 +00:00
semantic-release-bot
6dabb71600
chore(release): 4.63.9 [skip ci]
...
## [4.63.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.8...v4.63.9 ) (2025-10-21)
### Bug Fixes
* **homepage:** use app-wide abacus config in interactive flashcards ([cf1be2d ](cf1be2d173 ))
2025-10-21 17:09:40 +00:00
semantic-release-bot
0169ab5128
chore(release): 4.63.8 [skip ci]
...
## [4.63.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.7...v4.63.8 ) (2025-10-21)
### Bug Fixes
* **mobile:** restore abacus visibility in "Your Journey" section ([c96036d ](c96036d86b ))
2025-10-21 17:08:03 +00:00
semantic-release-bot
653db575ff
chore(release): 4.63.7 [skip ci]
...
## [4.63.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.6...v4.63.7 ) (2025-10-21)
### Bug Fixes
* **mobile:** reduce height of Your Journey section on mobile ([8944035 ](89440355bf ))
2025-10-21 17:03:24 +00:00
semantic-release-bot
632e840ca7
chore(release): 4.63.6 [skip ci]
...
## [4.63.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.5...v4.63.6 ) (2025-10-21)
### Bug Fixes
* **mobile:** optimize Your Journey section for iPhone displays ([9167fb4 ](9167fb40d6 ))
2025-10-21 16:57:23 +00:00
semantic-release-bot
1d7486ed48
chore(release): 4.63.5 [skip ci]
...
## [4.63.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.4...v4.63.5 ) (2025-10-21)
### Bug Fixes
* **flashcards:** store grab offset in local coordinates to prevent jump ([39d93a9 ](39d93a9e9f ))
2025-10-21 16:29:31 +00:00
semantic-release-bot
6d1bad142b
chore(release): 4.63.4 [skip ci]
...
## [4.63.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.3...v4.63.4 ) (2025-10-21)
### Bug Fixes
* **flashcards:** keep grab point under cursor with proper coordinate conversion ([1869216 ](1869216d2f ))
2025-10-21 16:28:08 +00:00
semantic-release-bot
e4ae3aefef
chore(release): 4.63.3 [skip ci]
...
## [4.63.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.2...v4.63.3 ) (2025-10-21)
### Bug Fixes
* **flashcards:** revert to simple delta positioning to prevent card jumping ([d018b69 ](d018b699c4 ))
2025-10-21 16:22:59 +00:00
semantic-release-bot
be323bfbc5
chore(release): 4.63.2 [skip ci]
...
## [4.63.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.1...v4.63.2 ) (2025-10-21)
### Bug Fixes
* **flashcards:** correct pivot point to rotate around card center ([50fc3fd ](50fc3fdf7f ))
2025-10-21 16:19:23 +00:00
semantic-release-bot
e52d907087
chore(release): 4.63.1 [skip ci]
...
## [4.63.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.63.0...v4.63.1 ) (2025-10-21)
### Bug Fixes
* **flashcards:** increase rotation sensitivity 10x for visible grab point physics ([c0fa926 ](c0fa926d16 ))
2025-10-21 16:08:00 +00:00
semantic-release-bot
1fd0474cd5
chore(release): 4.63.0 [skip ci]
...
## [4.63.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.62.1...v4.63.0 ) (2025-10-21)
### Features
* **flashcards:** add grab point physics for realistic rotation ([bf37eb1 ](bf37eb1928 ))
2025-10-21 16:05:21 +00:00
semantic-release-bot
9f56c9728c
chore(release): 4.62.1 [skip ci]
...
## [4.62.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.62.0...v4.62.1 ) (2025-10-21)
### Bug Fixes
* **flashcards:** improve shadow speed logging with separate throttling ([0f51366 ](0f51366fd5 ))
2025-10-21 15:59:26 +00:00
semantic-release-bot
fe1e8979c8
chore(release): 4.62.0 [skip ci]
...
## [4.62.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.3...v4.62.0 ) (2025-10-21)
### Features
* **flashcards:** add dynamic shadow based on drag speed ([92148a4 ](92148a4cf8 ))
2025-10-21 15:52:28 +00:00
semantic-release-bot
7088a7096a
chore(release): 4.61.3 [skip ci]
...
## [4.61.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.2...v4.61.3 ) (2025-10-21)
### Code Refactoring
* **flashcards:** completely rewrite drag-drop with simple approach ([5f0ad14 ](5f0ad14133 ))
2025-10-21 15:45:03 +00:00
semantic-release-bot
73f8f637cd
chore(release): 4.61.2 [skip ci]
...
## [4.61.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.1...v4.61.2 ) (2025-10-21)
### Bug Fixes
* **flashcards:** use explicit per-property configs to fix decay physics ([f32480a ](f32480a0f9 ))
2025-10-21 15:41:53 +00:00
semantic-release-bot
11aa44d882
chore(release): 4.61.1 [skip ci]
...
## [4.61.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.61.0...v4.61.1 ) (2025-10-21)
### Bug Fixes
* **flashcards:** fix position snap-back by using api.set before decay ([30e16c8 ](30e16c8e5a ))
2025-10-21 15:37:33 +00:00
semantic-release-bot
86357b3d7a
chore(release): 4.61.0 [skip ci]
...
## [4.61.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.60.0...v4.61.0 ) (2025-10-21)
### Features
* **flashcards:** enable unbounded drag and position persistence ([ad1ad69 ](ad1ad690f0 ))
2025-10-21 15:32:18 +00:00
semantic-release-bot
53475cf40e
chore(release): 4.60.0 [skip ci]
...
## [4.60.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.59.1...v4.60.0 ) (2025-10-21)
### Features
* **homepage:** significantly increase mobile hero abacus size ([424f41d ](424f41d4bf ))
2025-10-21 15:29:16 +00:00
semantic-release-bot
4c6939807e
chore(release): 4.59.1 [skip ci]
...
## [4.59.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.59.0...v4.59.1 ) (2025-10-21)
### Bug Fixes
* **homepage:** adjust hero abacus scale for optimal sizing across devices ([86dee31 ](86dee31c9a ))
* **homepage:** reduce mobile abacus scale to prevent scroll hint overlap ([b8235be ](b8235be612 ))
2025-10-21 15:27:10 +00:00
semantic-release-bot
b401bb5fa4
chore(release): 4.59.0 [skip ci]
...
## [4.59.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.2...v4.59.0 ) (2025-10-21)
### Features
* **homepage:** increase hero abacus size for better visibility ([7666b0a ](7666b0aea9 ))
2025-10-21 15:21:46 +00:00
semantic-release-bot
39afa455de
chore(release): 4.58.2 [skip ci]
...
## [4.58.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.1...v4.58.2 ) (2025-10-21)
### Code Refactoring
* **navbar:** prevent subtitle wrap and remove abacus emoji ([a58f7b7 ](a58f7b78b0 ))
2025-10-21 15:02:58 +00:00
semantic-release-bot
1c001e07b7
chore(release): 4.58.1 [skip ci]
...
## [4.58.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.58.0...v4.58.1 ) (2025-10-21)
### Bug Fixes
* **navbar:** apply glassmorphism to transparent mode, not scrolled mode ([8893675 ](8893675b36 ))
2025-10-21 14:58:54 +00:00
semantic-release-bot
4254459238
chore(release): 4.58.0 [skip ci]
...
## [4.58.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.10...v4.58.0 ) (2025-10-21)
### Features
* **navbar:** add glassmorphism effect to nav links when scrolled ([89b9072 ](89b90723b7 ))
2025-10-21 14:56:51 +00:00
semantic-release-bot
5611d148aa
chore(release): 4.57.10 [skip ci]
...
## [4.57.10](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.9...v4.57.10 ) (2025-10-21)
### Bug Fixes
* **navbar:** remove border artifact and add 10px bottom fade ([d5f60ce ](d5f60ce9d2 ))
### Styles
* **navbar:** improve theming to match homepage dark aesthetic ([284fc90 ](284fc90a53 ))
2025-10-21 14:53:05 +00:00
semantic-release-bot
e54ea20dbe
chore(release): 4.57.9 [skip ci]
...
## [4.57.9](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.8...v4.57.9 ) (2025-10-21)
### Bug Fixes
* **homepage:** add overflow hidden to Your Journey section ([415a1fb ](415a1fb1fa ))
2025-10-21 14:44:30 +00:00
semantic-release-bot
60b3a788b3
chore(release): 4.57.8 [skip ci]
...
## [4.57.8](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.7...v4.57.8 ) (2025-10-21)
### Bug Fixes
* **homepage:** adjust responsive breakpoints to prevent skill card clipping ([62ff067 ](62ff067bb9 ))
2025-10-21 14:33:47 +00:00
semantic-release-bot
3d774c8d82
chore(release): 4.57.7 [skip ci]
...
## [4.57.7](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.6...v4.57.7 ) (2025-10-21)
### Bug Fixes
* **homepage:** restructure layout to center 1400px wide demo section ([61403f2 ](61403f2f50 ))
* **homepage:** set min-width 1400px on container and remove max-width ([aa297d4 ](aa297d4ef7 ))
2025-10-21 03:07:11 +00:00
semantic-release-bot
712d318e7c
chore(release): 4.57.6 [skip ci]
...
## [4.57.6](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.5...v4.57.6 ) (2025-10-21)
### Bug Fixes
* **homepage:** increase skill cards container width to prevent title wrapping ([cd3eb61 ](cd3eb61cb5 ))
2025-10-21 02:36:21 +00:00
semantic-release-bot
8871050990
chore(release): 4.57.5 [skip ci]
...
## [4.57.5](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.4...v4.57.5 ) (2025-10-21)
### Bug Fixes
* **homepage:** prevent text overflow in skill cards ([a6ac55b ](a6ac55b7b1 ))
2025-10-21 02:23:27 +00:00
semantic-release-bot
64e2464ec1
chore(release): 4.57.4 [skip ci]
...
## [4.57.4](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.3...v4.57.4 ) (2025-10-21)
### Bug Fixes
* **homepage:** align container width breakpoint with grid columns ([422bf3d ](422bf3d968 ))
* **homepage:** make MiniAbacus fill container properly ([3b5d147 ](3b5d14765d ))
* **homepage:** widen skill cards container to 650px ([bc1ad3a ](bc1ad3a43a ))
2025-10-21 00:30:13 +00:00
semantic-release-bot
9847f8f461
chore(release): 4.57.3 [skip ci]
...
## [4.57.3](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.2...v4.57.3 ) (2025-10-21)
### Bug Fixes
* **homepage:** increase abacus container width to 120px/150px ([57c212f ](57c212f4f5 ))
2025-10-21 00:25:47 +00:00
semantic-release-bot
b2f5c19ce3
chore(release): 4.57.2 [skip ci]
...
## [4.57.2](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.1...v4.57.2 ) (2025-10-21)
### Bug Fixes
* **homepage:** increase skill card abacus container width ([e65e969 ](e65e96952f ))
2025-10-21 00:23:44 +00:00
semantic-release-bot
556a0eb194
chore(release): 4.57.1 [skip ci]
...
## [4.57.1](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.57.0...v4.57.1 ) (2025-10-21)
### Bug Fixes
* **homepage:** add overflow hidden to skill cards ([5070d8d ](5070d8d64f ))
2025-10-21 00:22:09 +00:00
semantic-release-bot
54cedbe03a
chore(release): 4.57.0 [skip ci]
...
## [4.57.0](https://github.com/antialias/soroban-abacus-flashcards/compare/v4.56.0...v4.57.0 ) (2025-10-21)
### Features
* **homepage:** make skills section responsive with emojis ([9ec0a71 ](9ec0a71546 ))
### Bug Fixes
* **homepage:** prevent skill card overflow ([fa26acf ](fa26acfbae ))
2025-10-21 00:19:34 +00:00