Skip to content

Releases: MarijanStajic/obsidian-quillstone

1.2.1

Choose a tag to compare

@MarijanStajic MarijanStajic released this 12 Oct 08:50

Text

  • Move text boxes with the text tool: click-and-drag an existing text box to move it, no need to switch to the lasso or cursor first. A simple click still reopens it for editing.
  • Move handle while editing: a new handle on the top-left corner of the text box moves it without leaving editing, alongside the existing resize handle on the bottom-right.

Touch

  • One-finger scrolling after using the stylus: once the stylus had been used, a finger on a sheet was always treated as a resting palm, so scrolling only worked in the dark area around the sheets. A finger that clearly slides while the stylus is at rest now scrolls the sheet. A palm resting during or right after writing is still ignored, as before.

Fixes

  • Fixed the page turning black when resizing a perfectly horizontal or vertical stroke (e.g. a straight line) with the selection handles: the stroke's thickness was blown up to cover the whole page.

1.2.0

Choose a tag to compare

@MarijanStajic MarijanStajic released this 04 Oct 19:26

PDF

  • Live PDF links: an imported PDF keeps its clickable links — table-of-contents entries, cross-references, and footnote markers jump to the right page of the sheet, and web links open in your browser. Follow one with the cursor or hand tool (or a finger tap on a tablet). The pen, highlighter, and erasers keep drawing straight over a link, as usual. Sheets imported before this version have no links stored — re-import the PDF to pick them up.

Pen

  • Dashed strokes: a toolbar toggle switches the pen to a dashed line, for boundaries, cut lines, or anything meant to stand out from regular ink. The setting carries over to the next stroke, never changing one already drawn — and a shape auto-recognized (or redrawn as a straight line) from a dashed stroke now keeps its dashed outline instead of silently becoming solid.
  • Multi-corner straight lines: holding a stroke still straightens it as before; holding still again, without lifting the pen, now locks that segment as a sharp corner and starts the next one — so a hand-drawn 90° angle (or any multi-sided outline) comes out as clean straight edges meeting at a point, not a diagonal cutting the corner. Angle snapping is also stronger now: a segment always snaps to the nearest 15° increment unless Alt is held, instead of only snapping within a narrow 4° tolerance.

Text

  • Font and size controls: pick a font (sans-serif, serif, monospace, handwritten) and a real pixel-based font size while editing a text box, independent of the pen's thickness setting.
  • Two ways to resize a text box, on purpose: dragging the selection handles (cursor/lasso, outside editing) scales the font along with the box, like resizing a shape. Dragging the dedicated handle on the box's corner while actively typing — now bigger and more reliable, and working on both axes — only reflows the text into the new size, leaving the font untouched.
  • Fixed a bug where editing an existing text box showed its old text as a ghost behind the live typing.
  • Fixed dropped/clipped characters when typing quickly.
  • Switching tools while editing text now saves what was typed instead of discarding it.

Navigation and interaction

  • Left/Right arrow keys jump to the previous/next page (when nothing movable is selected).
  • Two-finger pinch-to-zoom and pan work again directly on a sheet after using the stylus — a palm-rejection bug was blocking both fingers of a pinch gesture, not just a resting palm.
  • Small shapes, images, and text boxes can now be moved precisely without accidentally grabbing a resize handle instead.

Toolbar and settings

  • The toolbar now hides color and thickness controls for tools that don't use them (erasers, lasso, cursor, capture, laser), and swaps the pen's thickness buttons for the font-size field while the text tool is active.
  • New setting: "Switch to selection after drawing a shape" — disable it to stay on the pen (or whichever tool drew it) after finishing a shape instead of jumping to the selection tool.

1.1.2

Choose a tag to compare

@MarijanStajic MarijanStajic released this 21 Sep 13:26
  • Fixed an Obsidian plugin review failure: replaced direct .style.xxx = ... assignments with setCssStyles, as required by the obsidianmd/no-static-styles-assignment rule.

1.1.1

Choose a tag to compare

@MarijanStajic MarijanStajic released this 21 Sep 13:19
  • Zone eraser can now partially erase recognized stars, polygons, and open polylines (previously skipped entirely, only erasable whole-stroke).
  • Fixed freehand circles sometimes being recognized as an octagon/regular polygon instead of a clean circle.

1.1.0

Choose a tag to compare

@MarijanStajic MarijanStajic released this 21 Sep 12:40

New text tool, plus scrolling and hotkey improvements:

  • Text tool: click for a box that hugs what you type, or drag to set a specific size — text wraps to fit (breaking mid-word if there's no space to break at, e.g. a long URL), and the box never shrinks below what you drew. Left/center/right/justify alignment while editing. Click an existing text box with the text tool (or double-click it with any other tool) to edit its text, color, and alignment again.
  • Scrolling: a vertical scrollbar appears for multi-page sheets; arrow keys scroll the view when nothing is selected (they still move a selection when one exists).
  • Tool shortcuts: pen (P), highlighter (M), text (T), erasers (E/D), hand (H), cursor (C), lasso (L), plus bring-to-front/send-to-back, are now regular Obsidian commands — reassignable from Settings -> Hotkeys, and inert while typing in a text field or the color picker's hex input.

1.0.12

Choose a tag to compare

@MarijanStajic MarijanStajic released this 13 Sep 22:27

Cleanup after confirming the Scribble fix in 1.0.11 works:

  • Removed the temporary on-screen diagnostic log added while tracking down the stylus issue.
  • Removed the README's manual-install instructions now that QuillStone is on the official Obsidian community plugin list.
  • Added a one-time tip (shown only once, ever, only on iPad) pointing to Settings -> Apple Pencil -> Scribble as an extra safety net alongside the code fix already in place.

1.0.11

Choose a tag to compare

@MarijanStajic MarijanStajic released this 13 Sep 22:19

Your last report was the key piece: nothing logged at all during a failure means the pen's touch never reached the plugin's code — which rules out everything tried so far and points to something swallowing the input before JavaScript ever sees it.

That matches a confirmed WebKit bug (bugs.webkit.org/show_bug.cgi?id=217430, with an accepted fix on Apple's own developer forums): iPadOS's Scribble feature watches Apple Pencil input at the system level, and can silently eat PointerEvents before they reach the page — especially on quick successive touches, exactly "lift the pen, put it back down shortly after, nothing happens." tldraw's canvas has the exact same workaround in its own source.

The fix: also listen for the legacy Touch events (separate from PointerEvents) and call preventDefault() on them — this stops Scribble from claiming the input at all. No drawing logic changed; this only affects whether Scribble gets a chance to intercept first.

Immediate test you can do right now without updating: Settings → Apple Pencil → Scribble → toggle off. If that alone fixes it, it confirms Scribble was the cause. This update should fix it while keeping Scribble available system-wide for other apps.

1.0.10

Choose a tag to compare

@MarijanStajic MarijanStajic released this 13 Sep 22:08

Good call comparing against tldraw (github.com/tldraw/tldraw) — its editor has explicit, documented handling for exactly this class of iOS pointer bugs, and QuillStone was missing both:

  • tldraw explicitly turns off PointerEvent.getCoalescedEvents() on iOS, noting in its own source that the API is unreliable there, especially outside a normal https:// page — which describes Obsidian's mobile WebView well. QuillStone was calling it unconditionally on every pen movement; it's now skipped on iOS.
  • tldraw doesn't use a timer for palm rejection at all. The first time a real stylus (Apple Pencil, etc.) is used, it flips a permanent flag for the rest of the session, and from then on a finger is always ignored — no countdown, no expiring window. QuillStone's old 2-second window has been replaced with the same permanent-flag approach: once the pen has been used, a finger landing on a sheet is always treated as a palm, indefinitely (the dark margin around the sheets still scrolls by touch either way, since that spot can never be a resting palm).

The on-screen diagnostic log is still in this build — please test again and let me know how it goes, and if the delay is still there, another log capture from a failed attempt would help confirm whether these were the real cause.

1.0.9 (diagnostic build)

Choose a tag to compare

@MarijanStajic MarijanStajic released this 13 Sep 22:00

Follow-up diagnostic build. The log from 1.0.8 turned out to capture a sequence that worked fine (confirmed: all 5 strokes rendered) — no blocking branch was ever hit, which is expected since nothing failed that time. I need a log captured during an actual failure.

This version adds one more log line right before a stroke commits, showing how many points it accumulated, its color, the current paper color, and its size — and raises the log to keep the last 30 lines instead of 14.

To help pin this down: reproduce the failure (write, lift, wait, write again, confirm nothing appears at all), then immediately screenshot the top-left log. This time the last few lines should cover the actual failed attempt.

1.0.8 (diagnostic build)

Choose a tag to compare

@MarijanStajic MarijanStajic released this 13 Sep 18:42

Diagnostic build — the stylus delay is still not fixed after several targeted attempts (1.0.4, 1.0.6, 1.0.7), so rather than guess again, this version adds a small on-screen debug log in the top-left corner of the drawing view. It records every pen/finger down/up/cancel event with its type, contact size, pressure, time since the last event, and which exact internal check handled or blocked it.

To help me actually find the cause: open a sheet, reproduce the issue (write, lift, wait ~0.5s, try to write again and see it fail), then take a screenshot of the top-left corner showing the log right after it happens. That log will show whether the pen's touch even reaches the plugin during the failure, and if so, exactly what's intercepting it.

This overlay is temporary and will be removed once the real cause is confirmed.