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.1.0versionCode:7- SHA-256:
9ef4a13763179e43e22bcccbba19497fcb64182a0bb96fc9eb1dd085d4234967
- 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 packaged release is
0.1.0, built againstsn-plugin-lib0.1.65. - The package passes the 19 automated shape-matching and write-path regression tests. Physical-device validation on current firmware is still recommended.
- 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

