Features
Presence
Live avatars and peer cursors on the week grid.
Presence
Room
db.room('board', boardId) with presence fields name, color, role.
useBoardPresence:
- Boardless sessions park in per-tab idle rooms so hooks stay unconditional
- Anonymous guests get stable session colors
- Published name is shortened; never raw email
- Account settings override both:
settings.displayNamereplaces the email local part,settings.presenceColorreplaces the hash color
Avatars
PresenceAvatars — overlapping stack with +N overflow. The stack is a
button: clicking it opens a popover listing everyone in the room by name,
with their avatar color and role (편집/보기).
Cursors
grid-cursors.js — contentPointFromPane, gridCursorSpaceId (room-scoped key).
GridCursors:
- Publishes scroll-content coordinates (not viewport-only)
- Ignores touch pointer moves
- Republishes on pane scroll so peers stay aligned with cells
- Clears on pointer leave
- Transform + short transition +
willChange