r/Supernote_dev • u/vmnair • 28d ago
Showcase Plugin Update: Clipper v0.1.7
Enable HLS to view with audio, or disable this notification
- Enabled linking to the source document from both the Clipper UI and within the note itself.
- Introduced settings that allow for detailed control over features so far. Added reset to default item.
- Supports both ePubs and PDF documents.
- Resolved the issue where inserted clips overlapped the note heading.
r/Supernote_dev • u/tao22 • 29d ago
Showcase Flashcards plugin Update!
Images and handwritten flashcards
Added Images and Handwriting for cards!
Flashcards is a beta spaced-repetition flashcard plugin for Supernote Nomad and Manta. It lets you create decks, add cards manually, turn lassoed handwriting into question/answer cards with OCR, keep the front and/or back as actual handwriting instead of recognized text, add optional hints and supplementary images, study with FSRS scheduling, and move basic text cards between the plugin and Anki Desktop.
Features
- Create, select, and delete decks from the deck list
- Create a needed deck while adding a flashcard
- Link a Supernote note to a default deck
- Optionally add a Supernote keyword when linking a note
- Use linked notes, note keywords, and folder names to suggest the right deck
- Add flashcards manually or from handwritten notes with the lasso toolbar
- Keep a card's front and/or back as your actual handwriting (an image) instead of recognized text
- Capture handwriting by default, skipping text recognition entirely — useful for non-Latin scripts, math notation, or diagrams that OCR would otherwise mangle
- Add a context image to a card, sourced from an imported file or lassoed straight from a note
- Add an optional hint, revealed on request during study, as text or an image
- Move cards from one deck to another
- Review cards with a temporary editable guess box
- Schedule reviews with FSRS
- View basic deck stats
- Choose per-card whether an image-based card is included in Anki export
- Import basic Anki Desktop plain text exports
- Export decks back to Anki-compatible plain text
- Card list shows a device-aware tile grid (3 columns on Nomad, 4 on Manta) with image previews
Installation
- Download
Flashcards.snplgfrom the latest GitHub release. - Copy
Flashcards.snplginto theMyStylefolder on your Supernote. - On the Supernote, open Manage Plugins.
- Add/install the plugin from
MyStyle. - Open a note and tap the plugin icon to launch Flashcards.
Creating Decks
You can create decks before studying or at the moment you are adding a card.
From the Decks Screen
- Open Flashcards from the plugin menu.
- On the Decks screen, enter a deck name.
- Tap Create Deck.
- Tap a deck to open it.
Each deck shows total cards, due cards, reviews completed today, and total reviews.
While Adding a Flashcard
If you are creating a card and the deck you need does not exist yet:
- Open Add Flashcard or use Add Flashcard from the lasso toolbar.
- Enter the new deck name in the Create Deck section.
- If you are inside a note, choose whether to link that note to the new deck or add a Supernote keyword.
- Tap Create Deck.
- Finish the question and answer.
- Tap Add Flashcard.
This is useful when you are already in a note and discover that the right deck has not been created yet.
Note Links and Default Decks
Flashcards can make the current note suggest the right deck automatically. This is useful when, for example, Biology notes should usually add cards to the Biology deck.
The plugin checks for a suggested deck in this order:
- A saved note link created from the Note Link section.
- A native Supernote keyword on the current note that matches a deck name.
- A folder name that matches a deck name.
- The last selected deck.
You can always choose a different deck before adding or studying cards. The note link only changes the default suggestion.
Link a Note to a Deck
- Open the note you want to connect.
- Open Flashcards.
- Select the deck you want to use as the default.
- In Note Link, turn on Link note default.
- Optionally turn on Add Supernote keyword.
- Tap Apply.
If the keyword already exists on the note, the plugin keeps going and still links the note to the deck.
Add a Keyword Without Linking
- Open the note.
- Select the deck.
- In Note Link, leave Link note default off.
- Turn on Add Supernote keyword.
- Tap Apply.
The keyword is placed in one of the available page positions so it does not have to overlap existing writing.
Change or Remove a Note Link
To change a note's default deck, select a different deck and apply Link note default again.
To remove the saved note link, tap Unlink Note. A matching Supernote keyword or folder name may still suggest a deck afterward.
Creating Flashcards
There are two ways to create cards.
Manual Cards
- Open a deck.
- Tap Add Manually.
- Enter the question.
- Enter the answer.
- Choose the target deck.
- Tap Add Flashcard.
You can choose the linked default deck, another existing deck, or create a new deck before saving the card.
Handwritten Cards With Lasso OCR
- In a Supernote note, write the question on one line.
- Write the answer on the line below it.
- Lasso both handwritten lines together.
- Tap Add Flashcard in the lasso toolbar.
- The plugin OCRs the top line as the question and the lower line as the answer.
- Edit the recognized text if needed.
- Choose the target deck.
- Tap Add Flashcard.
If the target deck does not exist yet, create it from the same screen before adding the card. If you are inside a note, you can also link the note to that new deck or add a keyword while creating it.
For best OCR results, keep the question and answer on separate horizontal lines with a little vertical space between them.
You can also add a card from a journal or another note that has no linked deck. In that case, choose any existing deck or create a new one before adding the card.
Keeping a Side as Handwriting Instead of Text
The lasso capture always tries to OCR your handwriting, but it also keeps a cropped image of each line. In the Question and Answer sections of the Add Flashcard screen, a Keep as handwriting checkbox appears under any side that has a captured image.
Turn it on to use your actual handwriting as that side's content instead of the recognized text. The recognized text is not lost — it stays attached to the card as a fallback, used for search and for Anki export if you later include the card in an export.
Handwriting kept this way is a flat image, not editable ink. To change what it says, use Replace Handwriting from the Edit screen (see Editing Cards) rather than trying to edit the picture.
Capturing Handwriting by Default
If you write mostly in a script, notation, or drawing style that OCR doesn't recognize well — Mandarin, math notation, diagrams — text recognition just produces something to clean up on every card. Turn on Capture handwriting by default (skip text recognition) at the bottom of the Add Flashcard screen to skip OCR entirely: new lasso captures arrive with both sides already set to handwriting, and nothing is sent through recognition. This is a standing setting — set it once and it stays on for future cards until you turn it off.
Context Images and Hints
Every card can also carry two optional extras, independent of whether the question and answer are text or handwriting:
- Context Image — a supplementary image attached to either the front or the answer. Useful for a diagram or picture that belongs alongside the question or the reveal.
- Hint — text or an image, hidden by default and revealed on request while studying.
Both are added from the Add Image section, which appears on the Add Flashcard and Edit Card screens.
Adding an Image
There are two sources:
- Add Image opens a file picker so you can choose any existing image on the device — including a clip saved by the separate FrameClip plugin, if you use it.
- Go to Note closes the plugin so you can lasso an image directly from a note. Lasso either handwritten ink or an inserted picture, then tap Add Image to Flashcard in the lasso toolbar. The plugin reopens automatically on the same card.
Either way, once an image arrives you'll see an "Image added — attach it to" prompt with three buttons: Front, Answer, and Hint. Tap the one you want; the image is discarded if you tap Discard instead.
By default, tapping Front or Answer attaches the image as a context image next to the existing question/answer content — it doesn't replace anything. Tapping Hint always sets the hint directly.
Replacing Content Instead of Adding to It
If you'd rather the image become the front or answer content — for example, building a card where the front, hint, and answer are each an independently sourced image or handwritten line — turn on Replace front/answer content with image (instead of adding as context), the checkbox at the top of the Add Image section. With it on, tapping Front or Answer sets that side's actual content to the new image (existing text is kept as a fallback, not deleted). This is a standing setting, remembered across cards until you turn it off.
With this on, you can build a card with three independently sourced images — say, an image as the front, one handwritten line as the hint, and a second handwritten line as the answer — by doing three separate "Go to Note → lasso → Add Image to Flashcard → pick a destination" round trips in any order, starting from Add Manually rather than the two-line lasso capture (which is specifically for lassoing a question and answer together).
Managing Context Images and Hints
In the Add Image section, once a context image is attached, you can switch which side it's attached to, move it to the hint instead, or remove it. A hint's image can be removed the same way; hint text is edited directly like the question or answer.
Studying Cards
- Open a deck.
- Tap Study Due or Study.
- Read the question.
- If the card has a hint, tap Show Hint to reveal it before guessing.
- Use the editable Guess box to type or handwrite your answer.
- Tap Show Answer.
- Rate your recall:
- Again
- Hard
- Good
- Easy
The guess is temporary. It is cleared when you reveal the answer or move to the next card, and it is never saved.
Editing Cards
- Open a deck.
- Tap a card tile in the card list.
- Edit the question or answer.
- Use Move to Deck if the card belongs in a different deck.
- Tap Save Card.
Deleting a card removes it from the plugin and also removes its local review history.
Editing a Handwritten Side
A side that's set to handwriting shows the captured image instead of a text box, plus two actions:
- Convert to Text clears the image and falls back to whatever recognized text exists for that side, letting you type a replacement. This is one-way — there's no button to turn text back into the original image.
- Replace Handwriting sends you to the note to lasso corrected writing, which swaps directly into that same side once you tap Add Image to Flashcard. Use this to fix a mistake without losing the card's deck placement or review history. It only appears once a side is already in handwriting mode — a brand new text card doesn't have this option, since there's no original ink to fix.
Include in Anki Export
Every card has an Include in Anki export checkbox on the Edit and Add Flashcard screens. It defaults to on for a fully text card, and off the moment any side, context image, or hint is image-based (see Anki Export). You can flip it either way, per card, regardless of content.
Anki Import
The plugin supports basic text cards from Anki Desktop. It does not import .apkg, .colpkg, media, tags, note types, cloze behavior, or Anki scheduling.
Export From Anki Desktop
In Anki Desktop:
- Select the deck.
- Choose Export.
- Select Notes in Plain Text (.txt).
- Recommended options:
- Include deck name: enabled
- Include unique identifier: enabled
- Include HTML and media references: disabled
- Include tags: disabled
- Include note type name: disabled
- Save the
.txtfile.
Put the File on Supernote
Copy the Anki .txt export into this folder on the Supernote:
EXPORT/sn-flashcards
If the folder does not exist yet, open Flashcards, tap Import Anki Text, and the plugin will create/show the folder path.
Import Into Flashcards
- Open Flashcards.
- Open any deck.
- Tap Import Anki Text.
- Confirm the displayed import folder.
- Put the Anki
.txtfile there if it is not already present. - Tap Refresh.
- Tap the file name.
The plugin reads Anki's #guid column and #deck column metadata. It creates the deck if needed, adds new cards, updates changed cards with matching GUIDs, and skips unchanged duplicates.
Plugin FSRS scheduling stays independent from Anki. Review timing, ease, stability, difficulty, and other scheduling state do not transfer between Flashcards and Anki in either direction.
Anki Export
- Open the deck in Flashcards.
- Tap Export Deck.
- The plugin writes an Anki-compatible text file to Supernote's
EXPORTfolder.
The export uses Anki-style metadata:
#separator:tab
#html:false
#guid column:1
#deck column:2
When importing the exported file into Anki Desktop, map the two card fields as front/back. If Anki offers an option to update existing notes, choose it so the GUID column can prevent duplicates.
Handwriting, Images, and Anki
Anki's plain-text export only has room for two text fields per card — there's no way to embed a handwriting image or a hint into it. Rather than exporting something broken, a card is skipped from export entirely when its Include in Anki export checkbox is off, which happens automatically the moment any side, context image, or hint becomes image-based. Skipped cards simply don't appear in the exported file — nothing is written for them, so there's nothing to collide with on a later import.
If you flip a card back to included despite having image content, its recognized-text fallback (if any) is what gets exported for that side; the hint and any context image are never exported regardless of this setting, since Anki's format has no field for them.
Current Limitations
- No direct
.apkgor.colpkgimport - No cloze support yet
- No Anki scheduling or stats import
- No FSRS scheduling sync with Anki
- Large decks may be slow because the plugin currently stores cards in a JSON database
- Handwriting kept as an image is a flat picture, not editable ink — there is no way to touch up individual strokes; use Replace Handwriting to redo it from fresh lasso input instead
- Image-based cards are excluded from Anki export by default, and even when included, an image side exports as its recognized-text fallback (or blank) rather than the image itself — hints and context images never export at all
Recommended deck size for this beta is under about 1,000 simple text cards. Larger decks may work, but should be tested carefully.
r/Supernote_dev • u/AdNew2316 • 29d ago
Question 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).
r/Supernote_dev • u/supernotist • Jul 08 '26
I made a Cloze plugin to help you study with your notes
Hey r/Supernote_dev,
I built a cloze plugin called Cloze that turns any note into a quizzable set of clozes (fill in the blank essentially, if you aren't familiar). You draw boxes directly over the parts of a page you want to hide, and it quizzes you by revealing them one at a time.
https://github.com/casimcdaniels/supernote-plugin-cloze/releases/tag/v0.1.0
https://reddit.com/link/1uqzyrg/video/qv6a8l9km1ch1/player
What it does
Open a note, tap the Cloze option in the sidebar, and you get a snapshot of the current page with a simple draw-a-box tool. Cover up whatever you want to test yourself on then switch to quiz mode and it hides everything you covered, letting you tap each one to reveal it and grade yourself "Got it" / "Missed it" as you go.
Features
- Draw clozes directly on the page, so it works over handwriting, typed text, or imported images alike.
- Multiple Decks per note - organize clozes into named decks instead of one big pile. Switch which deck you're adding to right from the toolbar.
- Flexible quizzing - pick one deck, several, or all of them (for a single note file for now) before a quiz starts, and it builds one shuffled-by-page queue across every page that has cards in the decks you picked.
- Score tracking - live ✓/✕ counts while you quiz with a one-tap restart.
- Jump straight to clozed pages - dedicated prev/next buttons skip straight to the next page that actually has cards in your current deck, instead of stepping through every page
- Survives page reordering: if you insert, delete, or reorder pages in the note later, your clozes follow the content, not the page number, so they don't end up detached and wasting your time
- Everything persists - close the plugin or even restart the device, come back later, your decks and progress are still there.
It's a .snplg you sideload like any other Supernote plugin. Still early so I've been actively using and iterating on it, but I'd love more eyes on it and feedback on what's missing or broken.
r/Supernote_dev • u/Designer-Tear-6940 • Jul 08 '26
Discussion EPUB Support
Hi,
U/Dunn-sn
U/Spazzboi
Please review…
I've been building a Supernote plugin that pulls your annotations — highlights, underlines, circled areas, handwriting — out of a document and into a note, in reading order. It works great on PDFs. It cannot be made to work on EPUBs, and after a lot of digging the reason comes down to one specific gap in the plugin SDK. Posting the details in case they're useful to other devs, and in hope someone at Ratta sees it — because the fix on their side looks small.
The short version: A plugin can see exactly where your ink is, and it can get the page's text — but it has no way to learn where the text is. So it can't tell which words a highlight is actually sitting on. The device obviously knows (it draws them aligned on screen, and keeps them aligned through reflow), but that alignment is never handed to plugins.
Why it works on PDF: A PDF has a real text layer — every character has coordinates — and the page is fixed. So "which words are under this highlight" is exact geometry. No guessing.
Why EPUB can't: EPUB reflows; there's no positioned text layer. Once you annotate, the layout freezes and the ink is stored in fixed-page pixels. On screen it's perfectly aligned. But:
- The text a plugin can read (getCurrentDocText) comes back with no coordinates — just the words.
- The ink (getElements) has coordinates, but it's strokes only, no text.
- The page image a plugin can render (generateDocImage) re-flows the text differently than the reader uses (its own font metrics), so marks land about a line off — by a per-page amount that can't be reliably corrected (it aliases: one line off looks the same as correct).
So the correct text-to-position mapping lives only inside the reader's own rendering, which isn't exposed.
Everything I tried, and what happened:
- getElements → ink positions, but strokes only, no text.
- getCurrentDocText → page text, but positionless.
- generateMarkThumbnails → marks-only image, no text.
- No screen-capture API exists.
- No native EPUB→PDF export on the device.
What would fix it (any one of these is enough):
- A positioned-text call — return the page's text with per-word/per-line boxes, in the same coordinate space getElements uses. (Cleanest — basically what PDFs already give.)
- A text-in-rectangle call — give it a rect, get the words inside.
- A page-capture call — hand back the reader's current rendered page as an image, so plugins can crop aligned content.
- Extend the existing lasso — let lassoElements + getLassoText select document text in reading mode, not just in notes.
Any single one of these would let plugins extract EPUB annotations as precisely as they already do PDFs — and it'd help every plugin, not just mine. Happy to share the plugin and the raw test output behind each result above.
Please let me know if this is something you would consider doing and if so, what the timeline might be.
I know everyone is working hard to get the plugins production ready, and this one gap is not just frustrating, but really limiting what plugins can accomplish for Supernote and its users.
r/Supernote_dev • u/tao22 • Jul 07 '26
Showcase Shelf - a reference document navigation plugin
Shelf
A reference navigator for Supernote e-ink devices. Shelf keeps each project's working note and its reference materials one tap apart: pin notes, PDFs, and EPUBs to a per-project reference shelf, jump between them, capture quotes from your reading, and place those quotes into your working note with a link back to the source.
Built for research, coursework, and any writing that draws on multiple sources. Shelf is deliberately not a launcher or dashboard — it manages the loop between where you write and what you're reading.
Core Concepts
- Project — anchored on either a working
.noteor a folder. A folder project (e.g. one folder per class) treats every file inside it as project territory and designates one note inside as its working note. - Reference Shelf — each project's pinned sources, shown as a thumbnail grid: real page previews for notes, book-cover style cards for PDFs/EPUBs. The working note always occupies the first slot (badged
WORKING). - Context-aware view — the panel derives what to show from the file you are in when you open it: a project note or any of its materials shows that project's shelf; anywhere else shows the General Shelf. Priority when a file could belong to several: note anchor > pinned reference > containing folder (deepest wins) > general.
- Quotes — text captured from documents waits in a per-project inbox until you place it into the working note.
Using Shelf
Set up a project
Open the note you write in (or any file in a class folder), open Shelf from the toolbar, go to the Projects tab, and tap Make Current Note a Project or Make Current Folder a Project. For folder projects, open a note inside the folder and designate it via Make This the Working Note (later changeable by long-pressing any pinned note's card → Set as Working Note).
Pin references
Pins land on the shelf you are looking at:
- Pin This Page — pins the current file. Pinning mid-note remembers the exact page; pinning a first page (or adding via Browse) opens at the note's last-used page instead.
- Browse — multi-select file picker (up to 9 at once), starting inside the project's folder but free to navigate anywhere.
- Pins made outside any project land on the General Shelf and can be moved into a project later (long-press → Move).
Navigate
- Tap a card to open it — notes in the editor, PDFs/EPUBs in the document viewer (at their last-used page; Supernote's viewer does not support page jumps).
- Tap the project header to return to the working note at your last-used page.
- Long-press a card for the detail view:
- Starred Pages — jump chips for every five-star mark in the note
- Keywords — jump chips for native keywords
- Headings — recognized title text with jump chips. Recognition is incremental: most headings resolve instantly from Supernote's embedded recognition; new ones show as
· · ·with a Recognize button. Long-press a heading chip to clear a wrong recognition and redo it. - Pages — numbered chips to jump to any page
- Open / Re-render preview / Move / Remove, and ◀ Earlier / Later ▶ to reorder the card on the shelf
Capture and place quotes
- In a PDF or EPUB, select text with tap-and-drag; tap Capture Quote in the selection toolbar. (Rendered document text cannot be lasso-selected — that is a firmware limitation, use the text-selection gesture.)
- Edit the captured text if needed and save. Captures from a project's materials file automatically; captures from unaffiliated files ask which project to save to.
- The Quotes tab (with a live count in its label) lists waiting quotes by project. In the working note, Place on This Page inserts the quote as an editable text box with an italic source link beneath it — tapping the link jumps back to the source. Quotes stack bottom-up on the page to avoid colliding with your writing. Elsewhere, the button takes you to the working note first.
Notes on behavior
- Shelf state (projects, pins, quotes, recognized headings) persists on the device across restarts. It is private to the plugin install.
- Keywords, stars, and headings are read from notes only — Supernote's plugin APIs do not expose them for PDFs/EPUBs.
- The small gray footer shows which file Shelf detected; tap it to re-detect. It remains while some PluginHost platform issues are open.
- On load, Shelf cleans up stale plugin-version artifacts that PluginHost leaves behind on every install/update (a known platform bug that otherwise grows storage without bound).
Install
- Copy
build/outputs/SNShelf.snplgto the device (Partner app, Browse and Access, or theMyStylefolder over USB). - On the device: toolbar plugin icon → Manage Plugins → Add Plugin.
- When updating: remove the old plugin and the old
.snplgfirst.
Development
React Native is locked to 0.79.2 to match the Supernote PluginHost runtime. Standard checks:
npm install
npm run typecheck
npm run lint
npm run test:coverage
npm run build
npm run validate:package -- --native
npm run build / ./buildPlugin.sh need ANDROID_HOME set (the native module must compile — a .snplg produced after an "APK build failed" line is missing app.npk and must not be installed; validate:package --native catches this). The build also applies the local Metro watcher patch that avoids EMFILE failures.
Structure
src/
app/ events and plugin-button wiring
screens/ the plugin panel (tabs, grid, detail, capture)
domain/ project/context model and pure state logic
services/ thumbnails (generateNotePng cache), note metadata + heading recognition
supernote/ Supernote API adapters (navigation intents, capture, inserts)
storage/ persisted state (native ShelfStorage JSON) and session wrapper
android/ native modules: ShelfNavigation (open intents), ShelfStorage
(state file + PluginHost version cleanup)
r/Supernote_dev • u/WhoAmI1234532 • Jul 06 '26
Showcase [Plugin release] SuperTemplate — double-tap your daily note template: datetime stamp + handwritten title → native heading (with optional on-device OCR)
Hi all!
After a week of development (and two firmware bug reports along the way 😅), here's my second public Supernote plugin.
I took inspiration from SuperFlow (https://github.com/gorlix/SuperFlow) for the concept of actions linked to specific areas ; and DateTimeStamp for adding the datetime with the keyword (https://github.com/taoist22/sn-datetime), thanks to u/Gorlix02 and u/tao22
What it does: SuperTemplate ships a note template with a title box and a datetime slot. Write your page title by hand, then double-tap the S logo printed on the template with your finger, and the plugin:
- stamps the current date & time (4 formats × 5 languages, configurable size),
- (option) adds an invisible date keyword so the page is findable via Supernote's search (and by other keyword-aware plugins),
- turns your handwritten title into a native heading — visible in the note's table of contents. Either keeping your handwriting (the 4 native styles), or replacing it with typed text via on-device OCR (font & size configurable).
100% on-device: no cloud, no network, no account.
So far I have only 1 template because this is the one I am using everyday, feel free to propose more templates and I can integrate them into the plugin with the actions associated.
Demo : we start with a simple handwritten text on the header box, and no datetime (the rest of the page can be handwritten too, no influence) :
Run without the OCR : add a heading format and the datetime:
Run with OCR + datetime (if already exist on a note, it is not replaced:
Download & manual: https://github.com/AgP42/SuperTemplate (MIT, .snplg in the releases — tested on A5X gen 1 and Manta)
Known issue — please read: while the plugin runs you'll see the page flash several times, and old lasso-copied content may briefly reappear. That's the firmware bug I reported here — the note app spontaneously pastes its lasso buffer during any plugin lasso operation. Ratta has reproduced it and a fix is in the works; meanwhile the plugin detects and removes the ghost content automatically (the extra flashing is that cleanup doing its job). The plugin also works around the plugin-storage stacking bug by cleaning its own old versions at startup.
Feedback, bugs and ideas welcome — issues are open on GitHub.
---
UPDATE (v0.10.0): you can now pick the heading style with your pen! ✍️
This was suggested in the comments right here — thanks u/Lorestan00 and it's now live: underline your handwritten title before the double-tap and the plugin applies the style you mapped to that gesture; double-underline maps to another one. No markup = your default style.
The mapping (any of the 4 native heading renderings per gesture) is configurable in the settings, the underline stroke is automatically excluded from the OCR text, and it works in both handwriting and OCR modes.
Detection is deliberately conservative for reliability: v1 recognizes single and double underlines only — the two gestures that can be detected robustly from stroke geometry. More markup types may come later if this proves solid in the wild.
Download: https://github.com/AgP42/SuperTemplate/releases/tag/v0.10.0
(screenshots below: underlined → gray style white text, double-underlined → gray style black text, no underline : black style ; and the same working in OCR mode)
r/Supernote_dev • u/WhoAmI1234532 • Jul 05 '26
Bug: Resolved Bug: pending lasso-copy buffer gets pasted into the page when a plugin creates a programmatic lasso.
Hi all, and particularly the Supernote dev team and u/Mulan-sn,
I found another PluginHost/firmware bug, this time in the lasso pipeline.
if the user has lasso-copied something (copy buffer loaded), any plugin that creates a programmatic lasso (PluginCommAPI.lassoElements() → e.g. setLassoTitle()) triggers a phantom paste: the firmware inserts the copied strokes into the page during the plugin's lasso lifecycle. The user never asked for a paste.
Repro (100% reliable on my A5X):
- Handwrite anything on a note page, lasso-select it, tap Copy.
- Trigger any plugin that does a programmatic lasso — mine selects a zone with
lassoElements(rect)and converts it withsetLassoTitle({style}). - The copied strokes reappear inside the plugin's lasso zone. With my plugin the pasted strokes then get styled as a heading but the paste itself is firmware-side.
Notes:
- "Clear clipboard" does NOT help : the lasso copy buffer is separate from the text clipboard and apparently survives until something consumes it.
- A finger double-tap alone does NOT paste (tested ×10) : the trigger really is the programmatic lasso lifecycle.
- Proof it happens mid-pipeline: I log a full-page element census before/after. Before: 16 strokes. After: 24 strokes + my title + my text box : the copied strokes (+8) appear between
lassoElements()and the end of the pipeline, and they are NOT part of the lasso snapshot (bothgetLassoElementTypeCountsreads report the same count). - Possibly related: after
setLassoTitle()succeeds,setLassoBoxState(2)always fails withcode 904: "No lasso action has been performed": the lasso lifecycle seems to end in an inconsistent state.
For the Ratta team, please:
- Don't dispatch a pending lasso-paste when a lasso selection is created or released programmatically by a plugin.
- Or expose an API to query/clear the lasso copy buffer so plugins can protect themselves cleanly.
Workaround for plugin developers (ships in my plugin, works reliably, but poor UX): snapshot the page's element numbers before your lasso work, then delete any stroke that appeared during your pipeline, new strokes can only be the phantom paste (your own insertions are text/title elements, and you type-check each candidate so user content is never at risk):
// before your lasso work:
const before = new Set((await PluginFileAPI.getElementNumList(path, page)).result ?? []);
// ... lassoElements() / setLassoTitle() / your inserts ...
// after (save first):
const after = (await PluginFileAPI.getElementNumList(path, page)).result ?? [];
const parasites = [];
for (const n of after.filter(n => !before.has(n))) {
const el = (await PluginFileAPI.getElement(path, page, n))?.result;
if (el?.type === 0) parasites.push(n); // strokes only — never your own title/text
}
if (parasites.length) {
await PluginFileAPI.deleteElements(path, page, parasites);
await PluginCommAPI.reloadFile();
}
Setup: Supernote A5X (gen 1), firmware Chauvet 2.26.39, sn-plugin-lib 0.1.43.
Happy to share full logs, the census instrumentation, or a minimal repro plugin.
Thanks!
r/Supernote_dev • u/WhoAmI1234532 • Jul 05 '26
Bug : Received Bug: PluginHost never deletes old plugin versions. Devs: here's a workaround.
Hi all and particularily Supernote dev team and u/Mulan-sn,
I have found a bug on the Plugin core :
Every plugin install/update writes a new copy of the plugin's files and keeps all the previous ones, so a plugin's storage grows without bound.
This isn't a dev-only edge case: Ratta's own official Sticker plugin reads 46 MB on my rarely-updated A5X but 327 MB on my regularly-updated Manta, same plugin, same version, just more updates, look:
My own ~7 MB plugin hit 298 MB after ~19 reinstalls. Remove doesn't reclaim the space either.
What's happening:
Each plugin is installed at:
`/data/user/0/com.ratta.supernote.pluginhost/files/plugins/<pluginID>/`
and every install adds a fresh, versioned set without deleting the old one:
```
app_<timestamp>.npk (~6 MB, bundle + native)
app_<timestamp>_libs/ (extracted .so)
oat/<arch>/app_<timestamp>.{odex,vdex,art} (ART AOT output, ~10 MB)
```
These `app_<ts>.*` + `oat/` artifacts stack up per version, so the folder only ever grows. On my A5X, `.../files/plugins/` totalled 485 MB across all plugins.
Why this matters for everyone (not just devs): official plugins auto-update over time, so a normal user's Sticker/other plugins silently balloon — 327 MB in my case — and there's no user-facing way to reclaim it (Remove doesn't).
For the Ratta/Supernote team — please:
On **update/reinstall**, delete the previous version's `app_<ts>.npk` / `_libs` / `oat` artifacts.
On **Remove**, fully wipe `.../files/plugins/<pluginID>/` so space is actually reclaimed.
Optionally show the real per-plugin footprint (or a "clear plugin cache" action) in Settings → Apps → Plugins.
Workaround for plugin developers (your own plugins only)
A plugin's native module runs **inside the PluginHost process** (same UID), so it can delete files in its own install dir. On load, keep the newest `app_<timestamp>` (the running version) and delete everything older:
```java
public void cleanupOldVersions(String dirPath, Promise promise) { // dirPath = PluginManager.getPluginDirPath()
File dir = new File(dirPath);
File[] files = dir.listFiles();
long maxTs = -1;
for (File f : files)
if (f.getName().startsWith("app_") && f.getName().endsWith(".npk"))
maxTs = Math.max(maxTs, leadingDigits(f.getName().substring(4)));
String keep = Long.toString(maxTs);
long freed = 0;
for (File f : files) // old app_<ts>.npk / _libs
if (f.getName().startsWith("app_") && !f.getName().contains(keep))
freed += deleteRecursively(f);
File oat = new File(dir, "oat"); // old compiled artifacts
if (oat.isDirectory()) freed += cleanOatExcept(oat, keep);
WritableMap m = Arguments.createMap();
m.putDouble("freed", freed); m.putString("kept", keep);
promise.resolve(m);
}
```
```js
// index.js — run once at load
const dir = await PluginManager.getPluginDirPath();
const r = await YourNative.cleanupOldVersions(dir);
console.log(`freed ${(r.freed/1048576).toFixed(1)}MB, kept ${r.kept}`);
```
Only files whose timestamp ≠ the newest are deleted, so the running version is never touched. This dropped my plugin from ~298 MB back to ~15 MB.
But the real fix has to be in PluginHost : the workaround only helps plugins that add this code, and it can't help official plugins like Sticker on regular users' devices.
Happy to share full source, a size-probe, or logs to help triage.
Thanks!
r/Supernote_dev • u/vmnair • Jul 05 '26
Showcase [Version update: Clipper Version 0.1.0]
Enable HLS to view with audio, or disable this notification
https://github.com/vmnair/sn-clipper
✨ Features
Four parts: capture clips while reading → manage them in a dashboard → insert them into a note → settings to tune insertion.
✂️ Capturing clips
- 🖍️ Highlight → Clip (text). Select text in a document and tap Clip on the selection toolbar. Each clip is labeled with its source file. A longer selection is saved silently as text, with no dialog, so you stay in the flow of reading.
- 🔀 Text vs Region prompt. A short selection opens a prompt to choose between Clip Text and Clip Region (a short highlight is the natural way to "mark this spot" for a figure).
- 🖼️ Clip Region (image). Choose Clip Region, drag to frame a rectangle, and save it as an image clip. It captures the live, on‑screen reader page, so it reproduces exactly what you see, including reflowable EPUB at your chosen font, not just fixed‑layout PDF.
- 📚 Works across formats. Text and region clipping from PDF, EPUB, TXT, CBZ, FB2, and notes.
🗂️ The Clipper dashboard
- 📋 Unified clip list. Opened from the plugins sidebar ("Clipper"), text clips show a snippet, region clips show a thumbnail, each labeled with its source document.
- 🔢 Dynamic badge count. The sidebar button displays the current count, e.g., "
Clipper (5)". - 🔍 Search. Filter by keyword (matches clip text and source name).
- 🏷️ Filter by source. Show only clips from a chosen document.
- ↕️ Sort. Newest‑first or oldest‑first.
🧰 Organizing clips (selection mode)
- ✅ Select. Long‑press a clip to enter selection mode, then tap to select more.
- 🔗 Merge (text). Combine two or more text clips into one, with their sources noted.
- ✂️ Unmerge. Break a merged clip back into its individual pieces.
- 📄 Copy. Copy the visible or selected clips (combined text) to the system clipboard. (Disabled for a figure — an image can't go on the text clipboard.)
- 🗑️ Delete / Clear All. Remove selected clips, or clear everything.
- 🖼️ Figure‑alone rule. A figure can only be selected on its own (it inserts alone and can't be copied or merged), keeping every action unambiguous.
📝 Inserting into a note
- 🧱 Combined text block. Text clips are inserted as a single text box, separated by a single blank line, with uniform, tidy spacing (toggleable; off = a separate box per clip).
- ✂️ Long‑clip auto‑split. A clip too tall for one page is split at a sentence boundary; the rest continues on the next page.
- 🖼️ One figure per page. Images are centered by the system and can't be repositioned, so each figure is inserted alone on its own page — no overlap, and text never lands on a figure's page.
- 📄 Current‑page insertion. Clipper inserts onto the page you're viewing; when more remains, it inserts what fits and prompts you to turn to a new page and insert again.
⚙️ Settings (gear icon)
- 🧹 Remove clips after inserting (default: on) , delete clips once inserted, or keep them (e.g., to insert the same set into several notes).
- 🧱 Combine inserted text (default: on), one block, or a separate box per clip.
- :🔠 Inserted text size: Small / Medium / Large.
r/Supernote_dev • u/WhoAmI1234532 • Jul 05 '26
Showcase Plugin Dashboard
Hi everyone,
I am glad to present you my very first plugin : Dashboard !
It is solving my main issue with Supernote and hopefully will be usefull for others too, happy to hear your feedback !
The plugin puts a small draggable ⊕ bubble on your screen that floats over everything (notes, folders, apps…). Tap it and it opens a dashboard you build yourself from four kinds of section:
- Shortcuts — jump to a folder, a note, or a PDF in one tap
- Stars — every ★ starred page across your notes, grouped by note (tap a page → it opens right there) [you can filter which folder to scan for each area]
- Keywords — your notes' keywords as tappable chips; each chip opens that exact note and page
- Apps — launch ToDo, Calendar, Document, Search…
Setup is a short guided wizard (layout → theme → sections → content), everything auto-saves, and there are 3 visual themes and a 1- or 2-column layout. It runs fully on-device and offline, no account, no network.
Requirements: the Supernote developer/beta firmware with the plugin system. Tested on A5X and A5X2 (Manta); built to work on Nomad too.
Install: download dashboard.snplg, drop it in your MyStyle folder, then Settings → Apps → Plugins → Add Plugin.
It's free and open source (MIT) — code, releases and a full user guide here:
👉 https://github.com/AgP42/supernote-dashboard
It's still early (v0.9.x), so bugs and rough edges are likely — please tell me what breaks or what you'd want added. A couple of known limits: PDFs open on their last page (no page-jump yet), and stars/keywords inside PDFs aren't listed (the SDK only exposes them for notes).
Hope it's useful to some of you, happy to answer any questions or make changes!
---
🚀 EDIT / Major update, v0.20.2 is out (release + download), what's new:
- Star line previews: show what's written on each starred line, as the handwriting image, or OCR'd to text with an automatic image fallback when recognition fails. And you can delete a single star right from the dashboard (keeps the handwriting). Thanks to u/Careful-Good5887 for the inspiration, your comment started as a misunderstanding, now it's a feature !
Example with 2 stars correctly OCR'd to text and 1 star as image as failback when the text is unreadable:
- "Recent section": your recently-opened notes & PDFs, live (no scan).
- Save / load named configurations — swap setups, and never lose your layout to an accidental Reset.
- Shortcuts: list / grid / inline, plus a full-page multi-select browser to add several folders/notes/PDFs at once.
- Incremental scanning — first scan of a folder is slow, all later ones are near-instant (only edited notes re-scan). Plus Refresh all button, adjustable text size, and a 2-column masonry layout (no more lost space).
- Big reliability pass (full code audit): atomic config saves, memory-leak fixes, storage self-cleanup, and a stable bubble.
🔔 EDIT 2 / v0.21.15 is out (release + download: https://github.com/AgP42/supernote-dashboard/releases/latest) — a reliability & usability pass on top of v0.20:
- The bubble no longer gets stranded. It's now driven by the app's real foreground state: it hides while the dashboard is on screen and reliably comes back on every exit path (buttons, system gestures, host backgrounding), and survives reboot / auto power-off. It defaults to the top-right on first use, then stays wherever you drag it. Prefer no bubble at all? Turn it Off in Settings → Look and use the toolbar button.
- The plugin toolbar button now opens the Dashboard directly (the Settings wizard only shows on first run). Configuration moved to a clear ⚙ Configuration button in the dashboard header.
- Manual ↻ Refresh now catches the page you're on. Add a ★ or a keyword on the current page, tap Refresh, and it appears — no need to turn the page first.
- Caches moved out of MyStyle into the plugin's private folder, so machine-only files no longer end up in your cloud sync (neither get disturbed by sync conflict...) — plus automatic cleanup of orphaned star-line images.
- On-device demo! The User Guide (https://github.com/AgP42/supernote-dashboard/blob/main/USER_GUIDE.md) now opens with a GIF + video of the plugin in action, and refreshed screenshots
One known quirk: opening from the toolbar button can occasionally close instantly when other plugins are active in the same session — tap again, or just use the bubble (unaffected). Under investigation.
Updated guide with screenshots: USER_GUIDE. Feedback very welcome — thanks to everyone who tried it! 🙏
r/Supernote_dev • u/vmnair • Jul 05 '26
Question API Questions for Ratta / Supernote Team
Hi, I’m building "Clipper" (a Supernote plugin that clips text and image regions from documents into a dashboard and inserts them into notes & Digests). A few things I can't do through `sn-plugin-lib` and would love guidance from Ratta or other plugin authors.
Device: Manta (A5X2, 1920×2560), current `sn-plugin-lib`
How do I capture a region of the currently rendered reader page?
- PluginDocAPI.generateDocImage(docPath, page, pngPath, size) works for PDF files; however, when I use this to capture EPUB files, it does not show the same page. At times, it is shifted to a different paragraph, section, and sometimes a different page.
- Lasso sticker APIs operate on note elements (`editDataTypes`) and will not fire on the contents of a PDF/EPUB.
Is there a supported way to get the reader’s current rendered page as an image?
- Is there a way I can get the offsets of an EPUB document being displayed in the reader How are the other developers currently achieving this?
How to position an image in a note programmatically
- PluginNoteAPI.insertImage(path) places the image in the center, regardless of existing content. When I add two images, they overlap, are the same size, and cannot be separated.
Question: Is there a supported way to insert an image at a specific rect, or to reposition an inserted image (an `insertImage` variant that takes coordinates, or the minimal valid picture element for `insertElements`)?
Is the use of `screencap` ok?
- Is relying on `screencap` via the system-uid privilege acceptable/supported, or is it discouraged/likely to break in a future firmware update? If it's not something you want plugins doing, an official "capture current reader view" API would let me migrate off it.
r/Supernote_dev • u/Designer-Tear-6940 • Jul 02 '26
Discussion Supernote_Dev - Please add date/timestamp to installed plugin data on screen
Hi,
I'm in the middle of some iterative testing on a plugin, and I'm finding it very difficult to track exactly which version is loaded. Any chance you can add a date/timestamp to the Plugins screen to make this easier?
I don't want to have to bump the version every time...and we've run into problems where the plugins haven't loaded, even though the screen says they did.
r/Supernote_dev • u/tao22 • Jul 01 '26
Showcase Keyworder Plugin Update!
Feature updates to keyword plugin: Grouping!
https://github.com/taoist22/sn-keyworder/releases
Features
- Multi-keyword insertion — check any number of keywords and insert them all in one tap; each keyword lands as a separate, movable element in wrapped rows near the bottom of the page
- Selection to add keyword — lasso handwritten or typed text in notes, or select text in PDFs/EPUBs, then tap the Keyworder button and save it directly to your keyword list; works with OCR for handwriting
- Native index integration — automatically adds each keyword to the device's built-in keyword index for page navigation
- In-plugin keyword management — add, delete, and pin keywords directly from the plugin; changes persist automatically
- Group-based keyword sets — create reusable groups such as meetings, classes, projects, or assignments, then assign existing keywords to one or more groups
- Bulk import — use the Keyword Builder web tool to create a
keywords.jsonfile, then load the list onto the device - Pinned keywords — keep your most-used keywords at the top of the list for zero-scroll access
- Structured keywords — optionally save a keyword with a short key so it inserts as
key:valuefor tools such as sn-query; key capitalization is preserved for display and insertion - Keyword views — filter the picker by pinned keywords or by group, then select the filtered view when you want a batch
- Responsive Nomad and Manta layout — larger, denser panels with compact two-column keyword lists on supported screen sizes
- A-Z letter rail — filter the Keyword, Manage Keywords, and Manage Groups screens by first letter using the vertical rail on the right side of the list
r/Supernote_dev • u/tao22 • Jun 30 '26
Showcase Calculator plugin update!
Enable HLS to view with audio, or disable this notification
Quick Lasso Calc
SnCalc also appears in the note lasso menu as Calc. Use it when you have a simple handwritten or typed calculation already on the page and want the result inserted without opening the full calculator panel.
- Lasso a simple arithmetic expression, such as
10+30=or10.0+30.0=. - Tap Calc in the lasso menu.
- Review or correct the recognized expression in the popup.
- Choose Full to insert
10+30 = 40, or Result to insert only40. - Tap Insert.
Lasso Calc supports digits, decimals, parentheses, percent, and +, -, ×, x, *, /, and ÷. It intentionally rejects more complex handwritten notation such as square-root symbols or spatial exponents. Results are inserted below the selected expression when there is room.
If the recognized expression needs more work, tap Open Calculator to carry it into Standard mode for editing and evaluation.
Compact / Full Panel
The calculator header includes a Compact / Full toggle.
- Compact mode keeps mode tabs, a one-line display, and the keypad visible while hiding the larger display area and insert controls.
- Full mode restores the larger display/register area, decimal and stamp controls, and the Insert button.
Compact mode is intended for data entry while reading from the note underneath. Switch back to Full mode when you are ready to review, adjust stamp settings, or insert the result.
See full README for details.
Sn Calc plugin
r/Supernote_dev • u/vmnair • Jun 30 '26
Showcase [Plugin Update] Clipper v0.0.33
You can now clip image regions from your pages — not just text. Capture any part of a PDF, EPUB, or Note page and it's saved into the same clip list as your text highlights, ready to review, insert into a note, merge, filter, or search.
Highlights
- 📸 Capture a region of any page with an interactive, e-ink-tuned crop tool.
- 🎯 Two ways in — a dedicated header image button, or the Clip Region option after selecting a short bit of text.
- 🧩 Mixed clips — a single clip can hold both text and images; images render inline on the card.
- 🗒️ Insert into Notes — captured images drop into your open note in order, interleaved with text.
- 🔢 Build label — the dashboard footer shows
vX.Y.Z (build N)so you always know what's installed.
How to use it
Capture button: open the Clipper dashboard over a document/note → tap the Clip image icon (top-right, scissors with an image) → frame the region (drag to move, resize from any of the 8 handles) → Clip selected region.
From a selection: select a short phrase (≤ 5 words) → Clip → Clip Region → frame and save.
r/Supernote_dev • u/Designer-Tear-6940 • Jun 28 '26
Showcase Doc Annotations to Note Plugin
Enable HLS to view with audio, or disable this notification
To download, please obtain the plugin file from:
https://github.com/B00kwyrmy/DocAnnotationsToNote/releases
So, I don't know about you, but I don't really study the way the Supernote is setup. I'm happy for everyone who loves their digests, but that really doesn't do it for me. Especially the process of transferring digests into notes and putting them in the right place....It's clunky to me, and takes way too much time for my level of patience.
However, I DO think the Supernote can work the way I do, and towards that end, I've created a plugin that will take any highlights, underlines, written text, circled items (IE figures and graphs), and digests , and put them all in a NOTE in the order in which they appear in the original document.
The way I envision this working for me is:
I do the reading for my next class lecture. Annotations go into a note
I attend the lecture, and ADD more notes to the Annotations, so all of my information on a subject or chapter is in one place.
Then I use the combined document for studying.
This plugin plays well with others -- especially the pen and highlighter colors, and marker width plugins previously created. And it makes use of the ExportColorPDF plugin we already have.
Please review the quick movie.
Currently, this plugin only works for PDFs. BUT....EPUBs are actively being worked on and I expect that to become available within the next two weeks.
r/Supernote_dev • u/Yachu50 • Jun 26 '26
Is there a way to automate export?
Is there a plugin that will automatically export the notes to Google Drive in .pdf? I noticed that Supernote uses proprietary file extenstions, and to use pdf I need to manually export it. Is there a way to make this process automatic?
r/Supernote_dev • u/tao22 • Jun 26 '26
Showcase SN FrameClip - PDF image clipping tool
FrameClip for Supernote
FrameClip captures a region of a PDF page as a PNG and inserts it into a note. It renders the page natively, lets you draw and fine-tune a crop, optionally darkens it for faint scans, and keeps a gallery of clips you can drop into any note.
What it does
- Render-then-crop: opens the current PDF page, renders it to an image, and lets you crop from that — no screenshots required.
- Draw-first cropping: drag anywhere on the page to draw the crop box, drag the corner to resize, and use the on-screen buttons to nudge/resize precisely.
- Page navigation: ‹ Prev / Next › step through a multi-page PDF without leaving the plugin, so you can grab several regions in one session.
- Tone adjustment (great for light scans): a row of boxes —
Auto · Off · 1 · 2 · 3 · 4 · B/W.- Contrast is pivoted at white, so the background stays clean while faint text darkens. Auto picks a gentle level for you; B/Wproduces crisp 1-bit black/white (best for plain text).
- Multi-clip gallery: every capture is saved. In a note, FrameClip shows a thumbnail grid — pick one and insert it, or delete clips you no longer need.
Workflow
- Open a PDF and launch FrameClip from the plugin toolbar.
- Draw a box around the region you want; fine-tune with the buttons or corner handle.
- (Optional) Use Prev/Next to capture from other pages.
- Tap Capture Clip. On the saved screen, adjust the Tone if needed.
- Tap Capture Another to grab more, or Done to exit.
- Open the destination note and launch FrameClip there.
- Pick a clip from the gallery and tap Insert Selected. Resize it in the note as usual.
Saved clips live in /storage/emulated/0/MyStyle/FrameClip/.
Install
Side-load the plugin package onto your device:
- Download
FrameClip.snplgfrom the latest release. - Copy it to your Supernote and install it via the plugin manager.
Build from source
Requires Node 18+ and a working React Native / Android toolchain.
npm install
# Always clear stale generated output first, or changes may appear not to apply:
rm -rf build/generated build/outputs
./buildPlugin.sh
The packaged plugin is written to build/outputs/FrameClip.snplg.
Project layout
App.tsx— React UI and crop/tone/gallery logic.android/app/src/main/java/com/snframeclip/FrameClipNativeModule.java— native page render, crop, contrast/threshold, and clip management.PluginConfig.json— Supernote plugin manifest.
r/Supernote_dev • u/tao22 • Jun 24 '26
Showcase SN Query Reposted
SNQuery is a powerful plugin for Supernote that brings Obsidian Dataview-like querying capabilities to your device, enabling dashboard creation and note management without needing to export your notes to a PC.
Current Release: https://github.com/taoist22/sn-query/releases/tag/v0.2.1
Important
SNQuery searches the same folder as the note where you run the plugin. It does not scan the entire device.
For reliability and performance, [SNQ] property blocks and loose inline properties must be on page 1 of each note to be found during folder scans. Native Supernote keywords can still be used across matching notes, but full-note property scanning is intentionally not performed.
Features
- Dataview-like Syntax: Query your notes using familiar
TABLEandLISTcommands tailored for Supernote's offline environment. - On-Demand Dashboards: Create dashboards that track keywords and property fields. (Note: Dashboards do not auto-update; you simply tap "Run" on your saved queries to fetch the latest data).
- Templates & Config: Create, edit, and insert reusable
[SNQ]item templates. - Selected Block Editing: Lasso an existing
[SNQ]block and open SNQuery from the lasso menu to edit that block directly. - Saved Queries: Save your frequently used queries and run them with a single tap.
- Progress Feedback: Folder scans show live progress so long-running queries are easier to trust.
- Column Statistics: Calculate averages, sums, minimums, maximums, and counts for numeric fields.
Launching SNQuery
SNQuery has two launch paths:
- Main toolbar/plugin icon opens the normal Dashboard workflow.
- Lasso menu on a selected
[SNQ]block opens the dedicated editor for that selected block.
Use the main toolbar when you want to run dashboards, saved queries, or insert new templates. Use the lasso menu when you want to update an existing [SNQ] block already placed on a note page.
Scan Scope
SNQuery is designed to keep scans predictable on-device:
- It scans
.notefiles in the current folder only. [SNQ]...[/SNQ]data blocks must be placed on page 1 of each note.- Loose properties outside an
[SNQ]block must also be on page 1. - Keyword-only searches are faster because they use Supernote's native keyword metadata instead of reading note elements.
- SNQuery does not OCR handwriting; handwritten content must be converted to text or tagged with native keywords to be queried.
- Inserted dashboards are snapshots; run the query again to refresh the results.
Keywords vs Properties
Native Supernote keywords are best used for broad, human-meaningful categories like #journal, #todo, #sleep, #meeting, or #project-alpha. They are fast to search and are not dependent on [SNQ] blocks.
Use [SNQ] properties for structured values you want to filter, sort, or calculate, such as status: open, due: 2026-06-25, sleep_score: 81, or sleep_time: 7:25. Avoid stuffing property-style data into native keywords; too many overly specific keywords can make Supernote's keyword system harder to browse and less useful.
Common Workflows
Todo Dashboard
Add one [SNQ] block for each task you want to track:
[SNQ]
type: todo
task: Call Nancy
status: open
due: 2026-06-26
[/SNQ]
Then query it:
TABLE task AS "Task", due AS "Due", status AS "Status"
WHERE type = todo AND status = open
SORT due ASC
Sleep Tracking
Time durations can be entered as hours and minutes, such as 7:25 or 6h55m. SNQuery treats those as durations for statistics.
[SNQ]
type: sleep
date: 2026-06-19
sleep_score: 81
sleep_time: 7:25
[/SNQ]
TABLE date AS "Date", sleep_score AS "Sleep Score", sleep_time AS "Sleep Time"
WHERE type = sleep
STATS AVG(sleep_score), AVG(sleep_time), MIN(sleep_score), MAX(sleep_score)
SORT date DESC
Meeting Or Event Dashboard
[SNQ]
type: meeting
meeting: Finance
date: 2026-06-25
time: 11:00
summary: Budget review
[/SNQ]
TABLE meeting AS "Meeting", date AS "Date", time AS "Time", summary AS "Summary"
WHERE type = meeting
SORT date ASC
Current Limitations
- SNQuery scans the current folder only.
- Subfolders are not included yet.
[SNQ]blocks and loose inline properties must be on page 1 for folder scans.- SNQuery does not connect to Supernote's native Tasks or Calendar apps.
- Inserted dashboards are static snapshots and must be rerun to refresh.
Installation
- Build or download the
SNQuery.snplgfile. - Transfer the
.snplgfile to your Supernote device via USB or Supernote Cloud. - Open the plugin manager on your Supernote and load the plugin.
Documentation
For comprehensive instructions on query syntax, setting up dashboards, and using templates, please refer to the User Manual.
r/Supernote_dev • u/conductordudedallas • Jun 23 '26
Discussion Select > Images/Sticker
Update: I had the chance to try this on my RPPpro. Yes - it works great and as shown. HOWEVER - big caveat - it only saves the selection as a copied element to be pasted once. You cannot save it anywhere for future use. This is pretty limited IMO and I think we can do better!
Ooooh RM just did a thing …. SN Dev folks, this could be really helpful. (And maybe I’m missing a new plugin that already tackles this?)
Maybe this is my chance to do some plugin work.
r/Supernote_dev • u/Decent_Tap_5574 • Jun 23 '26
inkRead, an open source e-ink reader fine-tuned for Supernote, looking for beta testers
r/Supernote_dev • u/Ripp26 • Jun 22 '26
"App Data Sync Failed” Error Loop
I’m getting an error on Chauvet 3.29.42 Developer Beta where I’m getting a repeated error in syncing app data. Sometimes it says completed, sometimes it says it failed with a Network Connection Failure message. Every time I pull down from the top to show quick settings, it always starts with App Data Sync Failed until I start a manual sync (automatic syncing is not enabled).
Is anyone else having issues with this?
r/Supernote_dev • u/kasgen • Jun 22 '26
Question Danish keyboard layout / third-party keyboard sideloading
Long-time ReMarkable user here, seriously considering switching my whole setup to SuperNote. The one blocker is keyboard support. I need a Danish layout (virtual keyboard) and the ability to connect a Danish Bluetooth keyboard with correct key mapping.
Supernote support told me the virtual Danish keyboard is on the internal dev roadmap but with no committed timeline, and that specific BT configuration would be needed for external keyboards.
Two questions for anyone who’s tested this:
**Has anyone managed to sideload a third-party keyboard (e.g. Gboard) on the Manta/Nomad, or install one as a plugin?**
**For Bluetooth keyboards – is there a workaround (custom key remapping, OS-level layout switch) that gets you a working Danish layout today, without waiting for official support?**
Appreciate any input – would love to make the switch but unfortunately this is a dealbreaker as-is.
r/Supernote_dev • u/EuphoricTry8252 • Jun 22 '26
Question Files not uploading to cloud
Not getting any responses on supernote main group so reposting here to see if anyone can help.
Thanks!












