Host · Chat
Chat Screen Layout
App.tsx wraps the main screen in CustomTitleBar + MainToolbar, floats a collapsible Sidebar, and the main content region inside it mounts PaneFrame. PaneFrame splits the conversation area into as many as four tiles, and each tile is a ChatGroupSession that provides its own ChatContext and draws ChatView. SessionTasksPanel · MessageQueuePanel stack directly above that tile's composer.
App + Sidebar + PaneFrame
ChatGroupSession → ChatView
MessageQueuePanel + SessionTasksPanel
① CustomTitleBar + MainToolbar
Window controls + session/plugin/permission toolbar. Mounted by
src/ui/renderer/App.tsx.② PaneFrame tiles
Splits the conversation area into as many as four tiles (
src/ui/renderer/components/PaneFrame.tsx). Each tile is a ChatGroupSession.tsx that provides its own ChatContext and draws ChatView.tsx.③ Queue + Tasks panels
External signal queue + session tasks. They sit directly above the composer (
src/ui/renderer/components/ChatComposerDock.tsx) and draw nothing when they have no items.The actual screen
Side panels
PluginGridButton.tsx— grid of plugin entry buttons (the host UI plugin manifest's ui[] slots attach here).RoutinePanel.tsx— RoutineEngine's list of registered routines + on/off toggles.PermissionReviewStatusCard.tsx— reviewer mode/status card.ApprovalDock.tsx·QuestionOverlay.tsx— tool approvals and question cards. They are answered inside the tile that holds their conversation, and while one waitsPendingAnswerDot.tsxputs a yellow dot on that conversation's row in the sidebar.
There are two separate sidebars
The main chat screen has a collapsible floating Sidebar — session, project, and plugin views live in it, and it can be collapsed and resized.
src/ui/renderer/App.tsx renders it. The settings screen has its own nav column, separate from that one (src/ui/renderer/SettingsContent.tsx).