- Fix awareness state: setLocalState({ user: cursorUser }) so the default
y-prosemirror cursorBuilder reads state.user correctly
- Custom cursorBuilder: span.botsu-collab-cursor with inline borderColor,
div.botsu-collab-cursor-label with explicit color (no color:transparent
inheritance issue)
- CSS: caret 2px solid, label absolute below caret, 0.625rem, opacity 0.85
- Unwrap state.user ?? state in builder for robustness
Shared packages
Reusable BOTSU packages will live here. Planned packages include UI, protocol, identity, presence SDK, and testing utilities.
Each package must provide its own tests and public API. Application-specific behavior remains under apps/.