evOo-local/docs/ADAPTIVE-WORKSPACE.md
cynarAI e28c3acf02
feat: let the pane beside a conversation follow the bot's work (#123)
The live screen opens wide beside the chat while the bot works on it or asks
for a takeover, a file the bot presents as its result opens next to the
conversation, and a question that scrolled away gets a "Needs you" pill back
to it. Shared core rules derive the focus from signals clients already have
(pointer events, takeover requests, a new `present` flag on attach_file,
pending asks), move the pane only on focus edges, never replace a pane the
user opened, and learn per bot whether the screen opens on its own. Pane
widths persist per device; mobile shows a pill that opens the computer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C7VSRHHzyt2KwoCkUkZ2Gc
2026-10-03 22:23:46 +02:00

1.9 KiB

Adaptive workspace

The pane beside a conversation follows what the bot is actually doing, not a guess about the task. No classifier or model decides the layout: deriveWorkspaceFocus in @rakazo/core reads the thread state every client already has, so web and mobile agree and the rules stay testable offline.

Signals

Focus Signal Web Mobile
Screen A fresh thread.computer pointer event from a working run, or a takeover request Live screen opens beside the chat (wide pane), steps back a few seconds after the work ends Pill above the composer opens the computer
Artifact The latest run attached a file with present: true (attach_file) File opens beside the chat until the user closes it or the bot presents another Unchanged: file cards open the native preview
Needs you An unanswered ask on a waiting run "Needs you" pill replaces the jump arrow when the question scrolled out of view Existing push and attention notifications

Everything else stays a plain conversation.

Rules

  • The pane moves only on focus edges (applyWorkspaceFocus). The first focus of a conversation is a baseline, so opening a thread never jumps.
  • A pane the user opened by hand is never replaced or closed automatically. Auto panes close only when their own focus ends; a presented file stays.
  • Windows narrower than 1024px keep the conversation full width; file cards fall back to the dialog.
  • Per bot, the client learns from the user: opening the screen by hand while the bot works three times makes it open on every run; closing an automatically opened screen twice stops it opening on its own. A takeover request always shows the screen.
  • Pane widths are remembered per device.

Not in scope

Generated layouts, per-domain dashboards and prompt classification stay out: they guess, move the UI under the user, and cannot be verified deterministically.