- Add bridge.py for clean JSON-based Python-Node communication
- Add optional FastAPI server for REST API access
- Include requirements for API server setup
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add SorobanGenerator class with python-shell bridge
- No CLI arguments - clean TypeScript function calls
- Support for Express.js and Next.js integration
- Include comprehensive API documentation
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add colored-numerals.yaml for place-value with colored text
- Add count-by-5s.yaml for skip counting example
- Demonstrate new features with ready-to-use configs
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add --step flag to count by 2s, 5s, 10s, or any increment
- Update parse_range function to support step parameter
- Works with ranges to generate skip counting flashcards
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Add create-colored-numeral function for coloring digits
- Support place-value, heaven-earth, and alternating color schemes
- Numerals on back of cards now use same colors as beads on front
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement horizontal and vertical cutting guides that extend across entire page
- Use subtle 50% gray lines (0.25pt) that won't be distracting if cut is slightly off
- Guides run through the gutter space between cards
- Automatically adjust to any grid layout (2x3, 3x3, 3x4, etc.)
- Controlled by existing --cut-marks flag
- Appear on both front and back sides for consistent cutting
The guides make it much easier to:
- Cut all cards to exactly the same size
- Make straight cuts across the entire page
- Maintain consistent spacing between cards
- Handle larger batches efficiently with a paper cutter
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement four color schemes: monochrome, place-value, heaven-earth, alternating
- Place-value: Different colors for ones (blue), tens (magenta), hundreds (orange), etc.
- Heaven-earth: Orange heaven beads, blue earth beads for visual distinction
- Alternating: Blue/green alternating columns for easier reading
- Add --color-scheme CLI flag and config support
- Create place-value-colors.yaml example config
Color coding helps students:
- Instantly recognize place values
- Distinguish between heaven and earth beads
- Reduce reading errors in multi-digit numbers
- Make learning more engaging and memorable
Default remains monochrome for printer-friendly output.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Support common layouts: 1, 2, 3, 4, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30
- Add fallback logic for arbitrary card counts using square root calculation
- Remove panic on unsupported values - now handles any reasonable number
- Enable layouts like 18 cards (3x6) for larger batches
Users can now specify any cards-per-page value and get a reasonable
grid layout automatically calculated.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Wrap circles in a box for consistent top-left positioning
- All shapes now position from the same reference point
- Eliminates the bar appearing too high for circles only
Now all three shapes (diamond, square, circle) use the exact same
positioning logic with no special cases or exceptions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- All shapes now use center-based positioning (no exceptions)
- Remove shape-specific adjustments for cleaner code
- Calculate bead positions using centers for all shapes
- Diamond and square shapes offset from center appropriately
This eliminates the complex conditional logic and makes the code
much cleaner and easier to maintain. All three shapes now follow
the same positioning rules.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Circles use center-based positioning (original Typst behavior)
- Diamonds and squares use top-edge positioning
- Add shape-specific y-coordinate adjustments for consistent alignment
- Ensure all active beads properly touch the reckoning bar
Each shape now positions correctly relative to the reckoning bar,
with circles using their natural center positioning and other shapes
using top-edge positioning.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Standardize bead positioning to use top edge as reference point
- Adjust circle positioning to match diamond and square alignment
- Ensure active beads properly touch the reckoning bar
- Fix issue where non-circle beads appeared too high
All bead shapes now align consistently with the reckoning bar,
with active beads properly positioned against it.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add three bead shape options: diamond (default), circle, square
- Implement diamond shape as horizontally elongated rhombus (realistic)
- Add draw-bead function to handle all three shape types
- Update CLI with --bead-shape parameter
- Create circle-beads.yaml config for traditional round beads
Diamond shape is now the default as it more accurately represents
real soroban/abacus beads which are typically bi-conical or
rhombus-shaped when viewed from the side.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Clarify page ordering with detailed comments (fronts on odd, backs on even)
- Add PDF metadata for better document properties
- Improve qpdf linearization with object stream preservation
- Document duplex printing behavior in README
- Ensure consistent front/back pairing with explicit pagebreaks
The PDF now clearly alternates between soroban diagrams (odd pages)
and numerals (even pages) for reliable duplex printing with long-edge
binding.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add hide-inactive-beads parameter to draw-soroban function
- Conditionally render beads based on active state
- Add --hide-inactive-beads CLI flag
- Create minimal-beads.yaml config example
- Support both display modes: full (with grayed inactive) and minimal (active only)
This allows users to choose between two common soroban display
conventions: showing all beads with inactive ones grayed out, or
showing only the active beads for a cleaner look.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add DejaVuSans.ttf for main text
- Add DejaVuSans-Bold.ttf for emphasis
- Ensures PDF portability across systems
- No dependency on system fonts
DejaVu fonts are open source and freely redistributable.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Default target generates flashcards with linearization
- Install target for macOS dependencies (typst, qpdf)
- Sample generation target for all configurations
- Test target for quick validation
- Clean target to remove generated files
- Dependency checking before builds
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- default.yaml: Basic 0-9 configuration
- 0-99.yaml: Two-digit numbers with cut marks
- 3-column-fixed.yaml: Three-digit numbers with fixed columns
Each config includes paper size, margins, font settings, and
soroban display options.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create generate.py with full CLI argument support
- Support YAML/JSON configuration files
- Implement number range parsing and shuffling
- Add font path configuration for bundled fonts
- Include PDF linearization with qpdf
- Add sample generation script for testing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement draw-soroban function for rendering abacus beads
- Create flashcard layout with front/back support
- Add generate-flashcards main function for batch generation
- Support configurable layouts (6/8/9 cards per page)
- Include duplex printing alignment with mirrored backs
- Pure vector graphics using Typst drawing primitives
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add .gitignore for Python, macOS, and generated files
- Add requirements.txt with PyYAML dependency
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>