Releases: SattaRIP/obsidian-annotate
v1.0.6 - Performance Optimization
Major Performance Improvements
This release dramatically improves drawing performance through a layered canvas architecture and stroke caching optimizations.
Performance Gains
- 10-100× faster drawing with many strokes on canvas
- 2-10× faster calligraphy rendering
- Zero lag when drawing with 100+ existing strokes
Technical Improvements
Layered Canvas Architecture
- Split rendering into background (completed strokes) and foreground (current stroke)
- Background canvas caches completed strokes, only redraws when modified
- Foreground canvas only redraws current stroke during active drawing
- Reduces render complexity from O(all strokes) to O(1 stroke)
Calligraphy Optimization
- Cache stroke length calculation on completion
- Eliminate redundant O(points) loop on every render
- Store cached values in JSON for persistence
Bug Fixes
- ✅ Fixed Clear button opening minimized windows (now uses Obsidian Modal)
- ✅ Fixed cursor showing I-beam instead of crosshair for drawing
- ✅ Fixed drawing lag with requestAnimationFrame throttling
Testing
Tested with:
- Drawing sessions with 100+ strokes
- All pen types (fountain, calligraphy, marker, pencil)
- Pan/zoom operations during drawing
- Undo/redo with complex stroke histories
- Theme switching
- Canvas resizing
Full Changelog: v1.0.5...v1.0.6
v1.0.6 - Performance Optimization
Major Performance Improvements
This release dramatically improves drawing performance through a layered canvas architecture and stroke caching optimizations.
Performance Gains
- 10-100× faster drawing with many strokes on canvas
- 2-10× faster calligraphy rendering
- Zero lag when drawing with 100+ existing strokes
Technical Improvements
Layered Canvas Architecture
- Split rendering into background (completed strokes) and foreground (current stroke)
- Background canvas caches completed strokes, only redraws when modified
- Foreground canvas only redraws current stroke during active drawing
- Reduces render complexity from O(all strokes) to O(1 stroke)
Calligraphy Optimization
- Cache stroke length calculation on completion
- Eliminate redundant O(points) loop on every render
- Store cached values in JSON for persistence
Bug Fixes
- ✅ Fixed Clear button opening minimized windows (now uses Obsidian Modal)
- ✅ Fixed cursor showing I-beam instead of crosshair for drawing
- ✅ Fixed drawing lag with requestAnimationFrame throttling
Testing
Tested with:
- Drawing sessions with 100+ strokes
- All pen types (fountain, calligraphy, marker, pencil)
- Pan/zoom operations during drawing
- Undo/redo with complex stroke histories
- Theme switching
- Canvas resizing
Full Changelog: v1.0.5...v1.0.6
1.0.5 - Update Description
Changes
- Shortened plugin description to meet Obsidian community plugins requirements
This is a metadata-only update to pass the automated validation for the Obsidian community plugins repository.
v1.0.4 - Fix PDF Detection
Bug Fixes
- Fixed PDF Detection: OCR command now properly detects when a PDF file is open
- Previous version only looked for markdown files, causing "No file is currently open" error
- Now works with PDFs, images, and any file type
- If inserting text and no markdown editor is open, text is copied to clipboard instead
Usage
- Open a PDF or image file in Obsidian
- Run command: "OCR current file (image/PDF)" from command palette (Ctrl/Cmd+P)
- Wait for processing (you'll see progress notifications)
- Review and edit the extracted text in the modal
- Click "Insert" to add to your current note (or it will copy to clipboard if viewing a PDF)
v1.0.3 - Fix OCR Logic
Bug Fixes
- Fixed OCR Current File Command: Resolved logic error where the command would check MyScript settings but then fail because Google Cloud Vision is required
- Image/PDF OCR now always requires Google Cloud Vision API key (MyScript only works with stroke data from canvas)
- Clearer error message when Google Cloud Vision key is not configured
- Simplified OCR provider logic for image processing
Notes
If you're using the "OCR current file" command, make sure you have a valid Google Cloud Vision API key configured in Settings > Annotate. You can get one from: https://console.cloud.google.com/apis/library/vision.googleapis.com
v1.0.2 - OCR Current File
New Features
- OCR Current File Command: OCR any open PDF or image file directly from Obsidian
- Access via command palette: "OCR current file (image/PDF)"
- Supports multi-page PDFs (auto-converts to images)
- Supports image files (PNG, JPG, JPEG, GIF, BMP)
- Uses Google Cloud Vision API (same configuration as canvas OCR)
- Shows results in modal with one-click insert
Technical Details
- PDF pages are converted to PNG using pdftoppm
- Each page is processed separately for multi-page PDFs
- Results are displayed in the same ExtractedTextModal used for canvas OCR
- API usage is tracked and displayed in settings
Requirements
- Google Cloud Vision API key configured in settings
- pdftoppm installed for PDF support (usually part of poppler-utils package)
v1.0.1 - Author info correction
Fixed author information to match GitHub profile (Mythra PS).
No functionality changes from v1.0.0.
v1.0.0 - Initial Release
Features
- Inline Handwriting: Embed handwriting sections between paragraphs in markdown notes
- Realistic Pens: Fountain pen, calligraphy nib (flat-edge with pressure), marker, and pencil
- Stroke Smoothing: Adjustable stabilization (0-10) for shaky hands
- Dual OCR Providers: MyScript (2000 free/month, 98% accuracy) + Google Cloud Vision (1000 free/month)
- Drawing Tools: Draw, erase, pan modes with zoom support
- Stylus Support: Pressure sensitivity and twist detection for calligraphy pen rotation
- Auto-save: All strokes saved to JSON data files
- Undo/Redo: Full history support
Installation
Download main.js, manifest.json, and styles.css from the assets below and place them in .obsidian/plugins/annotate/ in your vault.
OCR Setup
To use OCR features:
- Go to Settings → Annotate
- Choose your OCR provider (MyScript or Google Cloud Vision)
- Enter your API keys (see README for setup guides)
🤖 Generated with Claude Code