Skip to content

Releases: thomas-hochbichler/obsidian-remarkable-tagged-sync

1.4.2

Choose a tag to compare

@github-actions github-actions released this 15 Aug 20:14
Immutable release. Only release title and notes can be modified.
9b6a2f9

Changed

  • The author's name in the plugin browser now opens the plugin's own site,
    taggedsync.com, instead of a GitHub profile. The README links it too.

1.4.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 19:42
Immutable release. Only release title and notes can be modified.
3bc1e8b

Fixed

  • The Buy button led nowhere. The checkout address shipped in 1.3.0 and 1.4.0 was a Polar
    checkout session, not a checkout link. Sessions expire, and this one had: both the button in
    the settings and the link in the README answered "Page not found", so nobody could buy Pro even
    if they wanted to. Replaced with a checkout link, which mints a fresh session per visitor and
    does not go stale.

1.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 08:57
Immutable release. Only release title and notes can be modified.
0ebf56e

Added

  • A tag on a folder now syncs everything inside it. reMarkable keeps a folder's tag on the
    folder alone and copies it to nothing below, so a notebook sitting in a tagged folder used to be
    skipped. It is now routed exactly as if you had tagged it yourself — every notebook and PDF in the
    folder, and in the folders nested below it. Taking the tag off the folder, or moving it to another
    mapped tag, is picked up as well. Contributed by
    @raghavpillai.

1.4.0-beta.1

1.4.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 15 Aug 08:31
Immutable release. Only release title and notes can be modified.
952846e

Beta pre-release for testing via BRAT. Changes are listed under [Unreleased] in CHANGELOG.md.

1.3.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 14:22
Immutable release. Only release title and notes can be modified.
d9fecd8

Added

  • Tagged Sync Pro — €24, once. Two things are now paid: transcription by a cloud model
    (Anthropic, OpenAI, Google, OpenRouter, with your own API key), and mapping more than one tag to a
    folder. Everything else stays free and stays free permanently: Apple Vision, a local server you
    run yourself, the downloadable local model, annotated PDFs, margin notes, and the one tag mapping
    that has always been there. Nothing that worked yesterday is behind the new gate.

    There is no subscription and no expiry — the licence is bought once and does not run out. It
    covers one person on up to 50 devices, at home and at work, and every future Pro feature is
    included at no further cost.

    Try it for 14 days from the plugin settings: one click, no key, no email, and nothing sent
    anywhere to start it.

  • The four cloud backends now ship to everyone, locked rather than absent. Choosing one without
    a licence falls back to the best free backend and says so, instead of failing silently or hiding
    the option — you can see what Pro is before deciding whether you want it.

  • A licensed user can free a device slot themselves, from a button in settings that opens their
    own page at Polar. A licence covers 50 devices and each vault counts as one, so a laptop you no
    longer have would otherwise hold its slot forever.

Changed

  • The plugin now contacts one more host, and only if you own or are trialling Pro: polar.sh,
    to check the licence. It is called only when a paid feature is used, at most once every 7 days,
    and it carries the licence key, this vault's activation id and a public organization id — no email
    address, no vault name, no note content. A free user never causes this call. If it cannot be
    reached, nothing locks: the last answer carries, and after 30 days the settings tab says so while
    Pro keeps working.

  • The README no longer claims that transcription always happens on your own machine. That was
    true while the cloud backends were not in the download; it is not true now, and the
    Network use section says exactly which backend sends what, and where.

  • The premium source is published. pro/ is in this repository under the PolyForm Strict
    licence — readable and auditable by anyone, with commercial use granted by
    LICENSE-COMMERCIAL.md. The plugin is one build and one main.js again,
    so store updates reach paying users like everyone else.

Fixed

  • Three free backends would have disappeared for everyone. The premium entry point had stopped
    registering the local-server backends (Ollama, LM Studio, custom) — the only transcription a free
    Windows or Linux user has. It never reached anyone because no premium build was ever released;
    the merged entry point registers all four.

1.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 14:28
Immutable release. Only release title and notes can be modified.
e405a82

Added

  • The notes you write in the margin of a PDF now arrive in the digest, switched on under
    Settings → Handwritten notes. They are off until you say otherwise: transcribing handwriting is
    work your machine does per note, and it is your own hand, so nobody's vault fills up with it
    unasked.

    Each note is transcribed where a transcription backend can run, and printed where it was written —
    under the section heading it sits in, or beside the sentence it points at, with a link to its
    page.

    And you can look at the handwriting itself. In the corner of every entry sits a small eye that
    draws the strip of page the note sits on, out of the PDF the note already embeds. It appears when you press
    it and not before, so a note with thirty margin notes costs nothing to open — and no image is
    ever written to your vault
    . What you see is the page: the printed text the note was written
    beside, with your own ink on it.

    A note whose handwriting could not be transcribed says so in words rather than standing empty, and
    keeps its anchor and its page link. If the PDF has moved out of the vault, or the page is gone, the
    entry says that too — where you are reading, not only in the console.

  • An article you send to the device now arrives as a digest, not as a transcript of itself. Send
    a web page over with the "Read on reMarkable" Chrome extension in notebook mode, or write on a page
    with the Type Folio, and the device stores that text inside the notebook. The plugin used to treat
    the whole page as handwriting: it took a picture of the printed article, sent it to be read back
    letter by letter, and wrote the result into your vault. Your own four words of ink sat somewhere in
    21 000 characters of guessed-at text.

    Such a page is now read as what it is — a document with your marks on it. You get the passages you
    highlighted, quoted with the sentence around them, under the article's own section headings, and
    your handwritten notes beside the lines they were written next to. On the page this was measured on:
    10 KB of digest in place of 21 KB of transcript, and nothing of the article's text transcribed at
    all, because it was already text.

    A notebook you wrote by hand is untouched and still gets its transcript. So does a page carrying
    only a typed line or two — the digest is for a page whose text is a document, and the difference is
    measured from the text itself, not from what kind of file the device calls it.

Fixed

  • Text you highlight in a notebook is in your vault now. A page whose text was typed rather than
    carried by a PDF — an article sent over by the "Read on reMarkable" Chrome extension, or anything
    written with the Type Folio — lost every one of its highlights: they were read from the file in a
    form the plugin refused, and each one was quietly dropped. On the page that brought this to light,
    53 of them. They are drawn again, and every affected note is re-synced once.

  • A passage you swipe the marker across is quoted too. The device stores two different things
    under one gesture: tap a word and drag the selection, and it records which words you marked;
    take the marker and drag it across the line freehand, and it records a stroke that knows nothing
    but its own shape. The first has always been in the digest. The second was drawn on the page and
    named nowhere — you marked a sentence and the note had no entry for it.

    It is read now, as an underline already was: the words under the swipe, quoted with the sentence
    around them. A dab of marker too short to be aimed at anything is left alone, and a swipe that
    lands beside the text rather than on it stays what it always was — ink on the page.

  • A mark that stops in the space after a word no longer takes the next word with it. Widening a
    mark out to whole words counted the space it ran into as a word begun, so context engineering.
    came through as context engineering. Building.

  • The pictures on a page are in your vault now. An article you send over keeps its
    illustrations, and the device shows them; the plugin left a blank gap where each one should be, on
    every page it has ever rendered. It reads them now — and so does any notebook page you put an
    image on yourself.

    The pictures are files of their own on the device, so a page that has one takes them along: an
    article with large diagrams makes a heavier attachment than it used to. A picture that cannot be
    fetched leaves the gap it always left, and costs the note nothing else.

  • The highlights on an article you sent over sit on the words you marked. The Chrome extension
    opens such an article with one invisible character the device draws nothing for. The plugin was
    charging it the width of a letter, which pushed the last word of the paragraph's first line onto
    the second line — and from there every word of the paragraph stood one word to the right of the
    yellow drawn over it: you marked "context engineering" and the page showed the mark over
    "minence: context engine". The character now costs what the device charges for it, nothing, and
    the paragraph breaks line for line as it does on the device. What the digest quoted was right all
    along; it is the page beside it that was out of step.

  • A note written down the margin arrives as one note. Several lines standing in the margin as a
    block used to become one entry per line — each transcribed separately, each anchored somewhere of
    its own, a single sentence torn into four. They are now read as the one note they are: one entry,
    one transcription, one strip of page to look at. Only in the margin: over the printed text a note
    spanning two lines still becomes two entries, because there two notes written across each other
    look exactly like one paragraph, and joining those would silently glue two thoughts together.

  • Handwriting written beside a page is no longer cut off at the paper's edge. The reMarkable does
    not stop the pen where the paper stops: zoom a PDF out and you can write in the space next to it,
    and that ink was landing outside the page the plugin built, so it was drawn nowhere. Such a page is
    now drawn a few percent smaller, so that everything you wrote fits on it and the margin note is in
    your vault whole; every page you kept inside the paper is untouched, at its own size. Every
    PDF-backed document is re-synced once for this — measured on a real annotated paper, one page in
    twelve was losing ink this way, one of them a whole sentence.

1.1.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 13:23
Immutable release. Only release title and notes can be modified.
2b546a6

Added

  • Windows and Linux can transcribe handwriting now, for the first time since the plugin
    shipped. Point the plugin at a local AI server you run yourself — Ollama, LM Studio, or
    any other server speaking the same API — and it sends each page there and gets the text back.
    Nothing leaves your machine, there is no account and no key, and it works on every system,
    including Windows on x64 where nothing else does.

    Until now the backend list on those systems had nothing selectable in it: Apple Vision is macOS
    only, and the downloadable local model needs Apple Silicon or Windows on ARM. Notes synced with
    the handwriting picture and no text, and that was the end of it.

    You choose the model. The plugin fills in the address for Ollama and LM Studio and asks you
    which model you loaded; it checks that the model can actually read images and says so if it
    cannot. As a starting point we measured Qwen2.5-VL-7B at 7.6 % character error, about three
    times more accurate than Apple Vision — though we measured it running the model directly rather
    than through one of these servers, so your result may differ.

    Two honest limits: you have to install and start that server yourself, and it uses your machine's
    memory and battery while a sync runs — so background syncing with it asks first. If the server
    is not running, settings tells you, and a sync says so at the end instead of quietly producing
    nothing. The same goes for a server that answers and refuses: whatever it said — LM Studio's "no
    models loaded", a model name it does not know — is repeated back to you at the end of the sync.
    And until you name a model, settings says so plainly and a sync stops rather than letting the
    server transcribe with whichever model it happens to have loaded.

  • You can stop a sync that is running. Click the turning icon in the status bar and confirm, or
    run Stop sync from the command palette. It works on every kind of run — a manual sync, an
    automatic one you never started, and Re-transcribe all synced notes — and there was no way to
    do it before: once a sync began, it ran to the end.

    It stops safely rather than instantly: the note being transcribed right now is finished first,
    so on a large notebook with the local model this can take a moment. The status bar says
    stopping… while it winds down. Everything already written is kept, and the next sync carries on
    from where it left off — no duplicates, and nothing is left half-written.

  • A local AI model you can switch transcription to, on Apple Silicon Macs with 18 GB of memory
    or more and on Windows-on-ARM PCs with 24 GB or more. It reads handwriting about three times more
    accurately than Apple Vision and keeps your headings and lists, and it runs entirely on your
    machine — no account, no key, nothing sent anywhere. It is never a default: a fresh install
    downloads nothing, and Apple Vision stays the default on macOS.

    It is a real cost, stated before you agree to it: 5.5 GB of model files plus a 12 MB program,
    checked against a published SHA-256 before anything runs, roughly 15 seconds a page against
    Vision's 0.4, and about 14 GB of memory while it runs. The first pages after the download are
    far slower than that
    while your system indexes 5.5 GB of new files, which settings now says
    rather than leaving you to discover it; it settles by itself. The download picks itself up when the
    connection drops
    — it keeps what it already has and carries on, and only gives up if several
    attempts in a row get nowhere. Settings has a button to delete the whole thing again — which you will need, because it lives
    outside your vault and uninstalling the plugin does not remove it.

    It also misreads differently. Vision's mistakes usually look broken on the page; this model
    writes its mistakes as fluent text. Check anything that matters against the handwriting.

    Windows on x64 and Linux do not get the option, and settings says so on the machine itself.

  • Text you typed on the device now appears in the transcript, in the right place between the
    handwriting around it. It is taken from the file exactly as you typed it — never read off an
    image — so it cannot come out misspelled. It was missing entirely before: transcription reads a
    picture of your ink, and typed text is not ink.

  • Underlining or circling a sentence in a PDF now quotes the words it points at, exactly like a
    marker highlight does. A passage you marked with the pen instead of the highlighter used to reach
    your vault as nothing at all. It goes through no transcription, so Windows and Linux get it too —
    and a mark on a page whose text the plugin cannot read is still left out, as before.

Changed

  • The transcript now tells you which page each part came from. A long notebook used to arrive as
    one unbroken wall of text — a 29-page notebook gave you 29 pages of handwriting with nothing
    marking where one ended and the next began. Every page that produced text now gets its own heading
    that links straight into that page of the embedded PDF, so you can read a line and jump to the
    handwriting behind it.

    Pages with nothing on them stay out of the way: instead of a heading each, they are named once at
    the end — No text on pages 2–6, 9–29. A page that could not be read says so on its own page,
    because that is something you can act on.

    Notes you have already synced keep the transcript they have. The new format applies as each
    note is next synced. To convert everything at once, run Re-transcribe synced notes from the
    command palette — it tells you the cost before it starts.

    A trade-off worth knowing: a notebook with text on every page now puts one entry per page in
    Obsidian's outline pane. That was the price of being able to navigate to a page at all, and it
    seemed the better half of the deal.

  • Cloud transcription sends one page per request instead of the whole notebook at once. This is
    what makes the page split trustworthy rather than a request the model could ignore, and it fixes
    two older problems on the way: a long notebook could exceed the response limit and come back
    truncated while still reporting success, and a local Ollama server could not fit a whole notebook's
    images in its default context at all. A page that hits a provider's rate limit is now retried
    before it is given up on. Expect a few percent more input tokens — the page images themselves cost
    the same either way.

  • The status bar icon turns while a sync is running. A long page could sit on the same
    "3/8 · Meeting" for minutes with nothing to say whether the sync was working or stuck. The icon
    now spins for as long as there is work — during a sync and during Re-transcribe all synced
    notes
    — and stops on the check or the cross. If your system asks for reduced motion, it stays
    still.

  • Handwriting is transcribed noticeably more accurately. Ink was drawn far too thin in the
    image handed to Apple Vision — two to nine times thinner than you wrote it — and a hairline is
    what its layout pass declines to call text. Writing that still comes back with nothing over it is
    now read a second time on its own. Over a ten-page corpus with hand-corrected ground truth,
    character errors fall from 31.6% to 26.1% and the share of lines found rises from 72% to 80%, in
    about the same time per page.

  • Existing notes keep the transcripts they have. Run Re-transcribe all synced notes to redo
    them with the better transcription — the command now says so. It is the only thing that can spend
    an API quota, so it stays your choice.

  • The diagnostics block reports which Apple Vision revision your Mac ran, and how much writing it
    refused to read at all. Nothing is sent anywhere; you copy it and paste it into a bug report.

  • The Highlights section is no longer a stack of quote boxes. Each page is a heading that links
    into the PDF, with your highlights as a plain list under it — the same boxless look the digest has.
    Nothing about the highlights themselves changes.

  • A synced note now says at the top that it belongs to the plugin: a collapsed callout,
    "Generated by Tagged Sync — do not edit". The sync markers around the note are HTML
    comments, so nothing in Reading View used to show where your own writing was safe. The
    opening marker is gone with it — the callout says what it said, and one line of comment
    clutter in Live Preview goes away.

  • Text typed above the callout is no longer overwritten. It used to fall outside the
    managed block, so a sync replaced it without a word; now it counts as an edit, and the
    note is left alone and reported like any other.

  • Your own writing now belongs in a note of your own, linked to the synced one, instead
    of below the sync block. New notes no longer offer that area. Anything you already wrote
    there stays exactly where it is and is still preserved on every sync — nothing to move.

  • Every synced note is rewritten once when you update, to add the callout. Notes are
    unchanged otherwise, but the whole vault touching at once is visible if you run git or a
    cloud sync over it.

  • The notice for skipped notes no longer points below the sync block; it explains that
    Tagged Sync only rewrites notes it wrote itself.

  • A digest section heading now carries the section number the page shows, so Introduction
    reads 1 Introduction. Many papers leave the number out of their PDF bookmarks, which is
    where the digest takes its headings from.

Fixed

  • A mark could be quoted from the middle of a word. Where a line break splits a word across two
    lines — which is every second line of a two-column paper — a mark under the second half quoted
    from where the break fell: accumu==lates both environment observations.== instead of
    ==accumulates both environment observations.==. Marks now widen to...
Read more

1.0.9

Choose a tag to compare

@github-actions github-actions released this 09 Aug 12:21
Immutable release. Only release title and notes can be modified.

Fixed

  • A single old notebook could stop the whole plugin working. Discover tags and Sync now
    both failed with "reMarkable's cloud answered in a way this plugin did not expect", and no tag was
    ever found. reMarkable stores four leftover fields from an older version of its sync on every
    document, and on some older documents it sends them as null rather than leaving them out — which
    the library this plugin reads the cloud with rejected. The document list is fetched in one go, so
    one such document failed the listing for the entire account. The plugin never reads those four
    fields, and now treats them as absent.

1.0.8

Choose a tag to compare

@github-actions github-actions released this 03 Aug 14:36
Immutable release. Only release title and notes can be modified.

Fixed

  • Annotated pages in large documents could fail to render and were skipped during sync
    (console error ValidationNotEqualError: not equal, expected [84], but got [0]). The
    parser misread a scene-tree block whose ids grow with document size; it no longer decodes
    that block at all, since the sync never uses it.

1.0.7

Choose a tag to compare

@github-actions github-actions released this 03 Aug 09:56
Immutable release. Only release title and notes can be modified.

Renamed: The plugin's display name is now Tagged Sync for reMarkable (previously
"reMarkable Tagged Sync"). This is trademark hygiene only — "reMarkable" is a trademark of
reMarkable AS, and the new name makes clear this is an unofficial, community-built plugin.
Same plugin, same features, nothing to do on your side; updates arrive as usual.

Also ships the store-scorecard cleanup: 341 automated-scan findings down to the 8 deliberately
deferred settings-API notices (analysis in .scratch/store-scorecard-fixes/).

Changed

  • Display name renamed to "Tagged Sync for reMarkable"; the store description now carries an
    "Unofficial; not affiliated with reMarkable AS." note, and the README leads with a trademark
    disclaimer. The plugin id is unchanged, so existing installs update in place.
  • The generated rmv6 parser is now post-processed by generate:kaitai: emitted as ESM
    (no UMD require/define), deduplicated _io__raw_body declarations, unused loop
    counters removed, and a scoped eslint-disable pair for the type-aware no-unsafe-*
    rules with the rationale inline.
  • src/shims/setimmediate.ts uses window instead of globalThis/bare setTimeout for
    popout-window compatibility.
  • Local ESLint now mirrors the store scanner's no-unsafe-*-on-.js overlay, so the lint
    ratchet counts what the store counts (baseline lowered 22 → 8).

Added

  • CONTRIBUTING.md (store scorecard hygiene finding), including the clean-room rule for
    the rmv6 parser.