Release Notes

2.0.0 (2026-08-29)

⚠ BREAKING CHANGES

  • plugin: minAppVersion moves from 1.8.7 to 1.13.0 — the declarative settings API (getSettingDefinitions) only exists there.

getSettingDefinitions() replaces the display() tab and its eight section renderers wholesale. The per-section redisplay callbacks are dead under this API (display() never runs), so the connect/disconnect flows, the legacy-token removal and every visibility-affecting write now re-render through update() instead. The conditional rows (server URL, cloud-change warning, sync interval, image quality) declare visible: hooks over live state; the connection status row renders both its description and its Connect/Disconnect button from live state; the cloud-change warning is an info row with the mandatory no-op render hook (definitions with neither control nor render are skipped entirely).

updateSettings is now persist-then-commit INSIDE the same write queue as the token writes: the produce() derives from the previously committed state, the merged data.json (settings plus sibling token entries) is saved first, and memory is swapped only after the write lands — a settings save can no longer clobber a concurrent token refresh, and the old commit-before-save ordering is gone. setControlValue rejects type mismatches, non-finite/out-of-range numbers, out-of-enum dropdown values and unknown keys; an invalid rmfakecloud URL is now refused with the framework’s inline error where the old tab painted an error span but persisted the value anyway.

9 new tests cover the write path — persist-then-commit ordering and write serialization are mutation-checked (deliberately regressed implementations fail them) and the token-preservation property is asserted against the merged write. 482 tests, tsc, lint –max-warnings 0 and build green; the prefer-setting-definitions advisory from the previous commit is now satisfied.

Features

  • plugin: declare the settings tab (Obsidian 1.13 declarative settings)

Bug Fixes

  • build: align with the catalog reviewer’s archive, ruleset and audit
  • build: harden the release path after adversarial review

1.16.0 (2026-08-20)

Features

  • domain: scale ink per device across all five models
  • highlights: parse text highlights and embed them in the PDF
  • output: add a deterministic PDF writer
  • output: burn annotations back onto source PDFs
  • output: write one PDF per notebook behind a save-as-PDF toggle
  • parser: extract typed text into a note
  • parser: read the colour a glyph range carries, closes #acff85
  • renderer: read per-stroke colour, opacity and fixed nib widths
  • settings: make the highlights note opt-in

Bug Fixes

  • domain: give the shading marker its real width
  • domain: take pen colours and widths from the reference renderer
  • output: safe highlight text encoding and correct rotated-page mapping
  • output: skip vault writes when the bytes are unchanged
  • output: write EPUB sources under their own extension
  • output: write unannotated sources, stop buffering unused pages, surface failures
  • parser: correct the typed text layout against a real notebook
  • parser: order typed text per position so mid-run insertions survive
  • pdf: give highlight annotations an explicit appearance stream, closes #acff85
  • pdf: place pages at their physical size, not a fixed 1872 units
  • renderer: highlighter compositing and typed-only pages
  • renderer: map the newer firmware stroke colours
  • renderer: port the real per-pen width response
  • settings: stop savePdf resetting to false on every restart
  • settings: validate constrained values on load

1.15.0 (2026-08-12)

Features

  • panel: sort notebooks within each folder (#15)

Bug Fixes

  • panel: render icon buttons on mobile
  • plugin: stop shipping Tailwind Preflight in the stylesheet #19 #19
  • renderer: map the stroke colours newer firmware emits (#14)

1.14.0 (2026-07-30)

Features

  • plugin: enable experimental mobile support
  • plugin: replace JSZip with fflate for .rmdoc extraction

Bug Fixes

  • plugin: generate the device id without crypto.randomUUID

1.13.0 (2026-07-30)

Features

  • plugin: show what’s new in a tab instead of a modal dialog
  • plugin: store reMarkable tokens in plugin data
  • plugin: surface support CTAs everywhere users can see them

1.12.0 (2026-07-29)

Features

  • plugin: aggregate what’s new dialogs across simultaneously updated plugins

1.11.0 (2026-07-29)

Features

  • plugin: add Knowii community to the what’s new dialog and harden it

1.10.0 (2026-07-29)

Features

  • plugin: surface per-page render failures instead of dropping silently

1.9.1 (2026-07-29)

Bug Fixes

  • plugin: parse version-1 line blocks (24-byte float points)
  • plugin: warn on unknown line-block versions instead of failing silently

1.9.0 (2026-07-29)

Features

  • plugin: add automatic background sync on a configurable interval
  • plugin: prune orphaned sync state after each cloud refresh

Bug Fixes

  • build: keep the release build compatible with older Bun versions
  • deps: bump fast-uri and brace-expansion past vulnerability advisories
  • plugin: drop 1.13-only declarative settings API for stable Obsidian

1.8.0 (2026-07-27)

Features

  • plugin: show a what’s new dialog once after plugin updates

Reverts

  • Revert “feat(plugin): require Obsidian 1.13 and drop the deprecated imperative settings fallback”

1.7.0 (2026-07-17)

Features

  • plugin: add hover tooltip to notebook sync status dot

1.6.0 (2026-07-17)

Features

  • plugin: require Obsidian 1.13 and drop the deprecated imperative settings fallback

Bug Fixes

  • plugin: use createSpan helper and enum-typed reads flagged by catalog review

1.5.0 (2026-07-17)

Features

  • plugin: make settings searchable via declarative settings API (Obsidian 1.13+)

Bug Fixes

  • plugin: address community review warnings (createEl, redundant assertions, unsafe any)

1.4.4 (2026-07-16)

Bug Fixes

  • auth: never fail plugin load on malformed token file

1.4.3 (2026-06-17)

1.4.2 (2026-05-30)

Bug Fixes

  • sync: send rm-filename header on /sync/v3/files requests

1.4.1 (2026-05-15)

Bug Fixes

  • all: fixed bounds calculation before rendering the images

1.4.0 (2026-05-15)

Features

  • all: enable folding folders in the panel

1.3.7 (2026-05-15)

1.3.6 (2026-05-15)

1.3.5 (2026-05-15)

1.3.4 (2026-05-15)

1.3.3 (2026-05-14)

Bug Fixes

  • plugin: rename sync command id to satisfy lint rule

1.3.2 (2026-05-13)

1.3.1 (2026-05-13)

1.3.0 (2026-03-25)

Features

  • all: added refresh button in remarkable panel
  • all: updated

1.2.0 (2026-03-08)

Features

  • all: updated

1.1.0 (2026-03-08)

Features

  • all: optimized images. Added support for WebP. Set JPG by default

1.0.0 (2026-03-08)

Features

  • all: added rmFakeCloud support

0.2.0 (2026-03-07)

Features

  • all: added support for importing rmdoc files

0.1.0 (2026-03-07)

Features

  • all: added fuzzy search
  • all: automatically list the notebooks when the panel opens
  • all: better sync pages
  • all: code cleanup
  • all: handle token expiration and renewal
  • all: improved buttons and search behavior
  • all: improved stroke sizes
  • all: improved stroke width in images (was still too thick)
  • all: initial commit

Bug Fixes

  • all: fixed logging

[0.1.0] - 2026-03-07

Features

  • reMarkable cloud authentication via one-time device code
  • Sidebar panel view listing notebooks with folder hierarchy
  • Per-notebook download (images)
  • .rm v6 binary file parsing for stroke data extraction
  • Page rendering via OffscreenCanvas with 9+ pen types, colors, and opacity
  • Per-page image output
  • Inline progress indicators per notebook in panel
  • Settings for target folder, image format
  • Token storage outside vault for security