From 25ff775136781830f80a609937a8e676d26a5608 Mon Sep 17 00:00:00 2001 From: Brooklyn Nicholson Date: Tue, 28 Jul 2026 02:49:51 -0500 Subject: [PATCH] feat(desktop): let every chat surface float its composer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit popoutAllowed was hardcoded false for session tiles, so only the primary thread could pop out — a tab or a split had no way to undock its composer. Secondary windows stay docked; that gate was the load-bearing one. --- apps/desktop/src/app/chat/composer/scope.tsx | 3 --- apps/desktop/src/app/chat/session-tile.tsx | 1 - 2 files changed, 4 deletions(-) diff --git a/apps/desktop/src/app/chat/composer/scope.tsx b/apps/desktop/src/app/chat/composer/scope.tsx index 53b43107507b6..e7e7aff880eff 100644 --- a/apps/desktop/src/app/chat/composer/scope.tsx +++ b/apps/desktop/src/app/chat/composer/scope.tsx @@ -23,8 +23,6 @@ export interface ComposerScope { /** This scope's "turn parked on user input" edge — gates Esc-to-stop. */ $awaitingInput: ReadableAtom attachments: ComposerAttachmentScope - /** Only the main scope may pop out (the floating composer is a singleton). */ - popoutAllowed: boolean /** This scope's transcript. Read it imperatively (input-history browse) to * keep streaming out of the composer's renders; subscribe only off-render * (auto-speak) where the reply edge is the whole point. */ @@ -37,7 +35,6 @@ export const MAIN_COMPOSER_SCOPE: ComposerScope = { $awaitingInput: $activeSessionAwaitingInput, $messages, attachments: mainComposerScope, - popoutAllowed: true, target: 'main' } diff --git a/apps/desktop/src/app/chat/session-tile.tsx b/apps/desktop/src/app/chat/session-tile.tsx index b64f7ca55a4d3..086d69fdf5330 100644 --- a/apps/desktop/src/app/chat/session-tile.tsx +++ b/apps/desktop/src/app/chat/session-tile.tsx @@ -128,7 +128,6 @@ function TileChat({ $awaitingInput: sessionAwaitingInput(runtimeId), $messages: view.$messages, attachments, - popoutAllowed: false, target: `tile:${storedSessionId}` }), [attachments, runtimeId, storedSessionId, view.$messages]