Snap Shapes is a Supernote plugin that turns rough lasso-selected ink into clean geometry. It is designed for fast notebook use, conservative no-match behavior on non-shapes, and local write-back that avoids full-page flashing in ordinary cases.
Left: rough input. Right: snapped result.
- line
- circle
- ellipse
- triangle
- rectangle
- square
- pentagon
- hexagon
- heptagon
- octagon
- Works on lasso selections in
NOTEandDOC - Can snap multiple independent shapes inside one lasso
- Prefers local lasso replacement over full-page rewrite
- Ignores many text-like and scribbly selections instead of forcing a snap
- Regularizes near-horizontal and near-vertical geometry
The latest compiled Supernote plugin package is tracked in the repo:
Current packaged version:
versionName:0.0.5versionCode:5- SHA-256:
1181ee7b1c9671fbe998276ec97d1b2a9d3a83697fc2bd57b046c25ecfa7dbe1
- docs/shape-snap-requirements.md: product requirements
- docs/shape-snap-algorithm.md: algorithm notes
- docs/shape-snap-status.md: current status and known issues
- AGENTS.md: agent-oriented working notes, benchmarks, and iteration workflow
Key implementation files:
From the repo root:
npm install
npm run typecheck
npx jest __tests__/shapeMatching.test.ts __tests__/shapeSnap.test.ts --runInBand --watchman=false
bash ./buildPlugin.shThe packaged plugin is written to:
build/outputs/supernote_shape_snap.snplg
- Copy dist/supernote_shape_snap.snplg to
MyStyle/ - On device, open
Settings -> Apps -> Plugins -> Add Plugin - Install the package
- The current known-good release line is
0.0.5. - When testing a fix on-device, always ship a higher
versionCodethan the currently installed package. Otherwise the device may keep the older broken install and make a working revert look broken.
- The displayed plugin name is
Snap Shapes - The internal plugin key remains
supernote_shape_snapfor compatibility - The package filename remains
supernote_shape_snap.snplg

