-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Improve laser pointer to persist until drawing stops (telestrator pattern) #7579
Copy link
Copy link
Closed
Copy link
Labels
Description
Problem statement
The current laser pointer feature has each stroke segment disappear individually after a delay (~1.2s). While functional, this doesn't match the expected behavior of telestrators and similar annotation tools, where all annotations remain visible until the user stops drawing for a certain duration.
This is a common pattern in presentation software, sports broadcasting overlays, and real-time annotation tools where the entire drawing session persists together rather than individual strokes fading independently.
Current behavior
- User starts drawing with laser pointer
- Each segment of the drawing starts fading after
laserDelayMs(1200ms) - Points are removed from the tail of each scribble while drawing continues
- When user lifts pointer, the current stroke transitions to "stopping" state and disappears within ~200ms
This creates a "trailing" effect where old parts of the drawing fade while new parts are being added.
Proposed behavior
- User starts drawing with laser pointer
- All strokes remain fully visible while the user is actively drawing
- When user stops drawing (pointer up), a timer starts
- If user resumes drawing within ~2s, the timer resets and all existing strokes remain
- If user doesn't resume within ~2s, all strokes from that drawing session fade out together
This "annotation group" pattern keeps the full context visible until the presenter is done annotating, then clears the canvas together.
Use cases
- Presentations: Circling multiple items, drawing arrows between concepts, annotating diagrams
- Teaching: Explaining complex diagrams where multiple annotations build on each other
- Live streaming: Sports-style telestration where full play diagrams stay visible
- Collaboration: Pointing out multiple related items in a shared canvas session
Implementation considerations
- Need to track "annotation sessions" (groups of scribbles created without a significant pause)
- Session timeout could be configurable (default ~2s)
- All scribbles in a session should fade together when the session ends
- May want to consider a maximum session duration to prevent indefinite accumulation
Reactions are currently unavailable