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
33 lines
1.9 KiB
Markdown
33 lines
1.9 KiB
Markdown
# 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.
|