u/AdNew2316

Term Definition v1.0.0 — define and cross-reference terms in your handwritten notes

Term Definition is a plugin that lets you mark a word, phrase, or math/code notation as a term, insert references to it anywhere else in a note, jump back to it with a tap, and rename it — every reference updates automatically.

https://reddit.com/link/1vieh3o/video/km9wlji621ih1/player

Installing

  1. Download term_definition.snplg directly: https://github.com/vincentaravantinos/supernote-symbol-definition/releases/latest/download/term_definition.snplg
  2. On the device: Settings → Apps → Plugins → Add Plugin, pick the downloaded file, Install.

Using it

Define and reference terms

  • Lasso any handwriting and press (Re)Define Term to turn it into a term. A ≝ marker and underline appear next to it, and it becomes available everywhere in the note.
  • Press Insert Reference to pick any defined term from a preview picker and insert a copy of its ink, underlined, at the current page. Tapping a reference jumps straight to its term, with a spotlight highlighting it on arrival.
  • Tapping a term's own ink directly shows the same spotlight, without navigating anywhere, since you're already there.

Redefine a term

  • Lasso a term's ≝ marker together with new ink (freshly written, some/all of the old ink kept, or a mix) and press (Re)Define Term again to change what a term looks like. Every reference across the whole note updates to match — this can take a while on a big note with many references.

Assign a definition

  • Lasso a term's ≝ marker together with explanatory ink and press Assign Definition to attach a definition, kept distinct from the term's own identifying ink. Tapping a reference or the term itself spotlights both the term and its definition together. Redefining a term's own ink never disturbs its assigned definition, or vice versa.

Orphaned references

  • If a term's ink is erased by hand, its remaining references become "orphaned." Tapping one explains that the term no longer exists and marks it with a ⚠.
  • Find Orphans scans the whole note at once, marks every orphan, and generates a report page grouped by term (with an ink preview per group) — tap any entry to jump straight to it.
  • Lasso one of an orphaned term's own references and press (Re)Define Term to recover it: recreates the term from a copy of that reference's own ink, instead of requiring anything to be drawn from scratch, and clears every reference's orphan status at once.

Find usages

  • Lasso a term's own ink (with or without its ≝ marker) and press Find Usages to generate a report of every reference to it across the note, with one tappable entry per usage.

Limitations

  • Overall it can be pretty slow.
  • Clearly we are pushing the limits of the plugin system here, there are many multi-page changes, many async modifications and interactions.
  • Meaning it can often be a bit buggy. To fix misbehavior: try the Repair Terms button, or activate/deactivate the plugin (and worst case restart the device, but so far never was needed for me).

GitHub: https://github.com/vincentaravantinos/supernote-symbol-definition

reddit.com
u/AdNew2316 — 13 days ago

Feature request: registerMotionListener needs a "note content only" scope

u/Dunn-sn

Currently registerMotionListener forwards every single touch on screen — included toolbar, sidebar, menus — not just note content. The problem is that my plugins catch those touches as well but have no means to know that those touch events are not landing on the note itself. Then I start some code that does stuff assuming we're on the note but it fails in a way we can't control (typically navigating to another app or another note).

Proposal: add an opt-in scope to registerMotionListener, e.g. {noteContentOnly: true}, to receive only touches on the note itself.

reddit.com
u/AdNew2316 — 16 days ago

Request: expose the physical side button to plugins

PluginManager.registerEventListener / EventType currently only cover PEN_UP, IMPORT_STICKER, and MOTION_EVENT — there's no way for a plugin to observe the device's physical side button of the pen (press, release, or held state). Could you expose an EventType (or equivalent API) for it? Use case: gating a plugin action so it only fires while the side button is held, rather than always-on gesture detection (I would like this for the scribble plugin).

reddit.com
u/AdNew2316 — 1 month ago

Scribble update (v1.1.0) — reliable detection

Quick update to Scribble (the erase-by-scribbling plugin I posted a couple days ago).

v1.1.0:

  • Detection is now reliable — no more false positives on cursive, and no false negatives either.
  • Only a zig-zag erases — a single strikethrough or an X / cross-out won't (by design).
  • Portrait only for now — it doesn't work in landscape.

Release: https://github.com/vincentaravantinos/scribble/releases/tag/v1.1.0

PS: Only tested on A5X, in case people can report about how well it works on Nomad, let me know!

u/AdNew2316 — 2 months ago

[Plugin] Scribble — erase handwriting by scribbling over it

EDIT: new version with less false positives!!!

Scribble lets you erase handwriting the way you do on paper: draw a quick back-and-forth scribble over the strokes you want gone, lift the pen, and they disappear — along with the scribble itself. No lasso, no button: it reacts to the drawing gesture.

How it works

  • Draw a tight zigzag over the strokes you want to remove.
  • Lift the pen — the crossed strokes and the scribble vanish.
  • Changed your mind? Tap Undo and it all comes back.Known limitations
  • The SDK can only delete via a rectangular lasso, so erasing is bounded by the crossed strokes' bounding box — a stroke sitting fully inside that box can get caught too (just Undo).
  • One continuous scribble per gesture (pen-down to pen-up); lift mid-scribble and each piece is judged on its own.
  • Slower on very dense pages — the SDK reads the whole page to work out what the scribble crosses.

Download here

https://github.com/vincentaravantinos/scribble/releases/latest/download/scribble.snplg

Repo: https://github.com/vincentaravantinos/scribble

u/AdNew2316 — 2 months ago

For fellow plugin developers: Collapse/Expand plugin

I just put out Collapse / Expand (folds a region of handwriting behind a + icon, brings it back later). I post separately here particularly for fellow developers because I struggled on many things while developing the plugin and I think many of the struggles might be shared by other developers so I thought I'd share it here so it may help people.

  • If you need persistent, reversible state tied to page content The collapsed/expanded/recollapsed state machine lives entirely inside the .note file via element userData — no sidecar files, no app-memory state, survives power-off/restart/reload. If you need durable state that travels with the note itself, this is a working example of the .note as your database.
  • If you need to find/manage "your" elements on a shared page Each element the plugin owns carries a userData prefix (icon / restored-content / mask / frame), so the plugin can locate and clean up exactly its own elements without touching the user's content or other plugins' data (userData is isolated per plugin).
  • If you need to round-trip arbitrary content, including links Strokes (points + pressure + EMR coords), text, geometry, and handwritten "stroke" links all survive a full delete-and-reinsert cycle as working links — including re-resolving a stroke link's member references after re-insertion assigns new page-nums, which is the fiddly part.
  • If you need progress feedback during a long operation Native dialogs are blocking modals, so they can't show progress. This plugin renders its own transient "working…" overlay via showPluginView/closePluginView around a headless operation — a pattern you can lift directly.
  • If you need gesture-driven live updates (drag-to-resize, etc.) The motion listener gives you coordinates only, no element identity. This plugin shows how to correlate touch with element rects, distinguish a move from a lasso-select starting at the same spot, and "read before dismiss" so you don't clobber the user's active selection.

Other things this code already handles, documented in SDK_DOC.md

  • The cached-vs-real .note split (getElements reads a cache; insert/deleteElements write the real file) and the reloadFile / no-saveCurrentNote-after-write pattern that keeps them in sync.

  • Always dismissing a programmatic lasso (setLassoBoxState(2)) after mutating, to avoid a trail-cache leak that eventually breaks insert/delete.

  • Minimizing element I/O cost — getElementNumList vs getElements, and batching writes since each write call costs roughly the same regardless of payload size.

  • Driving deferred work off input events instead of setTimeout/setInterval, which don't fire while the plugin is idle.

  • Faking filled/dashed shapes with the SDK's outline-only geometry and limited pen palette.

  • Working around modifyElements corrupting non-icon geometry when only userData should change.

    Happy to answer questions, and if you're solving something adjacent, feel free to borrow whatever's useful from the code or SDK_DOC.md (and if you have better ideas please let me know!!!)

Repo here: https://github.com/vincentaravantinos/supernote-collapse-expand

u/Dunn-sn also maybe relevant for you to see how I might abuse some things in the SDK...

reddit.com
u/AdNew2316 — 2 months ago

[Plugin] Collapse / Expand — fold handwriting away, bring it back anytime

Collapse / Expand lets you hide any selection of handwriting behind a small + icon and restore it later — like a foldable section for your notes. Handy for scratch work, drafts, or decluttering a busy page without deleting anything.

How it works

- Lasso a region → tap Collapse / Expand → it folds into a + icon.

- Lasso the + icon → tap again → the content comes back, with a thin outline marking its area.

- Lasso the icon (or the restored content) → tap again → it folds away again.

A few extras:

- Drag the + icon to move a collapsed section, or to resize an expanded section's area.

- Anything you write on top of an expanded section gets folded back in when you recollapse.

- Handwritten links survive the round trip as working links.

- Everything lives in the note itself — survives power-off, app restarts, and page reloads.

Known limitations

- A section stays on one page and shouldn't overlap/nest with another.

- Typed text boxes collapse fine but are hidden behind the section's white area once expanded from a plugin.

- Gets slower on very dense pages (the SDK's per-write cost scales with the whole page, not just the selection).

Download here: https://github.com/vincentaravantinos/supernote-collapse-expand/releases/latest/download/collapse_expand.snplg

Repo: https://github.com/vincentaravantinos/supernote-collapse-expand

u/AdNew2316 — 2 months ago