Skip to content

[Bug] Right-side strokes not visible until viewport interaction #36

@dezwit

Description

@dezwit

Environment

  • App: Notate (latest version)
  • Device: Onyx BOOX Note Air 1
  • OS: BOOX Android (latest firmware)
  • Stylus: BOOX Pen
  • Canvas type: Infinite canvas

Description

When drawing on the infinite canvas, strokes on the right side of the canvas are not rendered in real time, even though they are correctly captured.

The issue behaves inconsistently depending on viewport position:

  • Drawing on the left side of the canvas works normally (real-time rendering)
  • When moving to the right side of the canvas:
    • strokes are still recorded in the document
    • BUT they are not visually rendered
  • Returning to the left side:
    • rendering works again
    • but previously drawn strokes on the right remain invisible

The missing strokes only appear after a viewport interaction, such as:

  • panning the canvas with finger
  • dragging the canvas slightly
  • tapping or forcing a redraw event

After this interaction, all previously invisible strokes suddenly appear.


Steps to reproduce

  1. Open Notate
  2. Create a new infinite canvas note
  3. Draw on the left side → works correctly
  4. Continue drawing further to the right side of the infinite canvas
  5. Continue drawing

➡️ Result:

  • strokes are not rendered in real time on the right side
  • strokes exist in the model but are invisible
  1. Stop drawing and interact with canvas (pan / drag / tap)

➡️ Result:

  • previously invisible strokes suddenly appear

Expected behavior

  • All strokes should render in real time regardless of canvas position
  • No dependency on viewport interaction for rendering updates
  • Consistent rendering across full infinite canvas space

Actual behavior

  • Left side: real-time rendering works
  • Right side: strokes are not rendered until manual interaction
  • Canvas updates are delayed and only flushed on:
    • viewport movement
    • touch interaction
    • manual redraw trigger

Possible cause (hypothesis)

This looks like a rendering desynchronization issue caused by:

  • incomplete viewport invalidation logic
  • partial rendering tied to active viewport tiles
  • missing dirty-region propagation for offscreen strokes
  • delayed flush of stroke buffer until interaction event
  • tile-based canvas rendering not syncing with input layer

It appears that strokes are correctly stored in the document model but are not pushed to the render pipeline until a manual repaint is triggered.

Additional notes

  • Fully reproducible on Onyx BOOX Note Air 1
  • Latest version of Notate
  • Issue persists across sessions

Evidence

A screen recording demonstrating the issue.

https://www.youtube.com/shorts/TrEi8fu2qq8

The video shows:

  • strokes missing on right side during drawing
  • sudden appearance after viewport interaction

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions