figcraft/docs
bflatastic 1f6e75e0b6 M8: cursor chat and spotlight in live sessions
Two presence features for live sessions, with no accounts needed:

- **Cursor chat.** In a live session, `/` on the canvas opens a bubble in your colour at your pointer. What you type goes to everyone as you type, and others see it next to your cursor in place of your name tag. Enter (or clicking away) sends it and closes the box. On every screen it fades a few seconds after its last change (5 s, then a 1 s fade; with reduced motion it vanishes without fading). Escape takes it back at once and doesn't deselect. A box left open without typing closes by itself. Limits: 100 characters, control characters become spaces. Agents use `collab.cursorChat {text}`.
- **Spotlight.** Your avatar (top of the right panel) now has a menu with Spotlight me / Stop spotlighting (`collab.spotlight {on?}`). Everyone else follows your view and page, using the existing follow. People who join later are told by the server and follow too. Anyone who pans, zooms or presses Escape stops following, and a canvas banner ("Hana is spotlighting", Follow) lets them follow again. A newer spotlight takes over the old one. The presenter leaving or stopping ends it. The presenter sees a banner with Stop. After a reconnect, your spotlight goes out again.
- **Protocol: signals.** New `ClientMsg::Signal {kind, text}` and `ServerMsg::Signal {client_id, signal}` carry ephemeral presence. Signals never go into the document, the log or a saved state; the server keeps only who is spotlighting, for newcomers. The server cleans each signal: unknown kinds, malformed spotlights, a client's `ready` and anything over 1 KiB are dropped, and chat is capped and has control characters replaced. The app checks what arrives again before showing it. The hub rate-limits signals per connection (20 a second, bursts of 40) and drops the excess without closing the connection.
- **Compatibility, both directions.** A client that reads signals announces it with the word `signals` in its hello's `client_version`, and the server sends signals only to those clients, so older clients never see a message they can't decode. A server that takes signals answers with a `ready` signal after the welcome, and the client sends signals only after that, so older servers never get one; the app says the host runs an older version. Signals are kind plus text, so clients skip kinds added later and servers drop them.
- Engine: `Live` keeps `signals`, `chats`, `chat`, `spotlight` and `spotlighting`, all reported by `collab.peers`. UI: chat bubbles, the chat box, the spotlight banner (the existing canvas banner widget), the avatar menu and `ui.inspect` fields. Keymap: `/` maps to `collab.cursorChat` (Essential). Spanish labels for both commands, plus en/es UI strings.
- Docs: collab-protocol (messages, compatibility, Presence, security limits, agents), mcp.md, collaboration-parity rows, target-app-parity, ROADMAP, gaps, ui-parity.
2026-10-12 03:47:34 +07:00
..
brand M0.1-M0.3: workspace, licences, geom/color/doc crates 2026-10-09 12:01:57 -04:00
architecture.md M8: Windows QA fixes (#131) 2026-10-11 18:20:38 +07:00
auto-layout-parity.md M2: auto layout behaviour suite and fixes (#130) 2026-10-11 17:53:11 +07:00
cli.md M6: .fig import (best effort) (#132) 2026-10-11 18:59:59 +07:00
collab-protocol.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00
collaboration-parity.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00
components-parity.md M1: layers and assets panels behaviour suite and fixes 2026-10-12 03:47:34 +07:00
contributors.md About: Contributors and Models tabs with full credits; bump version to 0.2.0 (from 0.1.0) for release 2026-10-09 21:10:33 -04:00
control-protocol.md M7: dev resources links 2026-10-12 02:30:25 +07:00
dev-mode-parity.md M7: dev resources links 2026-10-12 02:30:25 +07:00
file-format-parity.md M7: export and inspect behaviour suite and fixes 2026-10-12 01:32:04 +07:00
gaps.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00
hardware-parity.md M8: Windows QA fixes (#131) 2026-10-11 18:20:38 +07:00
localization-parity.md M7: localization layer (#128) 2026-10-11 16:21:16 +07:00
mcp.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00
parity-checklist.md M5: Display P3: gamut warning and soft-proof sRGB (#127) 2026-10-11 17:20:10 +07:00
plugins.md M7: plugin panels and settings (#124) 2026-10-11 14:45:19 +07:00
prototyping-parity.md M5: prototyping behaviour suite and fixes 2026-10-12 00:57:43 +07:00
release-playbook.md M0.9: MCP server + figcraft-cli, PDF export, web app, release/CI packaging, vector edit mode, workspace lint cleanup 2026-10-09 13:31:53 -04:00
releasing.md M9: hosting figcraft-server: wss in the desktop app, server releases, deployment guide (#125) 2026-10-11 15:52:27 +07:00
roadmap.md M5: prototyping behaviour suite and fixes 2026-10-12 00:57:43 +07:00
server.md M9: hosting figcraft-server: wss in the desktop app, server releases, deployment guide (#125) 2026-10-11 15:52:27 +07:00
target-app-parity.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00
translating.md M7: localization layer (#128) 2026-10-11 16:21:16 +07:00
ui-parity.md M8: cursor chat and spotlight in live sessions 2026-10-12 03:47:34 +07:00