Files
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

124 lines
3.4 KiB
JSON

{
"name": "@soroban/abacus-react",
"version": "0.1.0",
"description": "Interactive React abacus component with animations, place value editing, and automated semantic versioning for GitHub Packages",
"main": "dist/index.cjs.js",
"module": "dist/index.es.js",
"types": "dist/index.d.ts",
"exports": {
".": {
"@soroban/source": {
"types": "./src/index.ts",
"default": "./src/index.ts"
},
"types": "./dist/index.d.ts",
"import": "./dist/index.es.js",
"require": "./dist/index.cjs.js"
},
"./static": {
"@soroban/source": {
"types": "./src/static.ts",
"default": "./src/static.ts"
},
"types": "./dist/static.d.ts",
"import": "./dist/static.es.js",
"require": "./dist/static.cjs.js"
}
},
"typesVersions": {
"*": {
"static": [
"./dist/static.d.ts"
]
}
},
"files": [
"dist/**/*",
"src/**/*",
"README.md"
],
"scripts": {
"build": "vite build && tsc --emitDeclarationOnly",
"dev": "storybook dev -p 6007",
"test": "vitest",
"test:run": "vitest run",
"test:coverage": "vitest run --coverage",
"test:ui": "vitest --ui",
"lint": "echo 'No linting configured'",
"storybook": "storybook dev -p 6007",
"build-storybook": "storybook build",
"clean": "rm -rf dist storybook-static",
"generate-examples": "tsx generate-examples.js",
"release": "semantic-release",
"release:dry-run": "semantic-release --dry-run"
},
"keywords": [
"react",
"abacus",
"soroban",
"mathematics",
"education",
"interactive",
"animations",
"typescript"
],
"peerDependencies": {
"@react-spring/web": "^9.7.0",
"@use-gesture/react": "^10.3.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"dependencies": {
"@number-flow/react": "^0.5.10",
"@radix-ui/react-tooltip": "^1.2.8"
},
"devDependencies": {
"@semantic-release/changelog": "^6.0.0",
"@semantic-release/git": "^10.0.0",
"@semantic-release/github": "^9.0.0",
"@storybook/addon-actions": "^7.6.0",
"@storybook/addon-controls": "^7.6.0",
"@storybook/addon-docs": "^7.6.0",
"@storybook/addon-essentials": "^7.6.0",
"@storybook/addon-interactions": "^7.6.0",
"@storybook/addon-links": "^7.6.0",
"@storybook/blocks": "^7.6.0",
"@storybook/react": "^7.6.0",
"@storybook/react-vite": "^7.6.0",
"@storybook/testing-library": "^0.2.2",
"@testing-library/jest-dom": "^6.8.0",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/minimatch": "^6.0.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"@vitejs/plugin-react": "^5.0.2",
"@vitest/ui": "^3.2.4",
"conventional-changelog-conventionalcommits": "^7.0.0",
"jest-environment-jsdom": "^30.1.2",
"jsdom": "^27.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"semantic-release": "^22.0.0",
"storybook": "^7.6.0",
"tsx": "^4.20.5",
"typescript": "^5.0.0",
"vite": "^4.5.0",
"vitest": "^1.0.0"
},
"author": "Soroban Flashcards Team",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/antialias/soroban-abacus-flashcards",
"directory": "packages/abacus-react"
},
"engines": {
"node": ">=18.0.0"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org"
}
}