v2-refactor-temp/docs/chat/chat-layout-modes.md
Home and Agent no longer persist a separate manual classic / modern layout
preference. The layout is derived from the resource-list display mode.
topic.tab.display_mode = 'assistant' uses the classic layout: assistant rail
on the left, chat in the center, topic list either in the left rail or the
right pane depending on topic.tab.position.topic.tab.display_mode = 'time' uses the modern single-sidebar layout.agent.session.display_mode = 'agent' uses the classic layout: agent rail on
the left, chat in the center, session list either in the left rail or the right
pane depending on agent.session.position.agent.session.display_mode = 'time' or 'workdir' uses the modern
single-sidebar layout.topic.tab.show controls whether the left resource list is expanded.useClassicLayoutRightPaneOpen(surface, { enabled, defaultOpen }):
ui.chat.right_pane_open_override for Home and
ui.agent.right_pane_open_override for Agent. A null override delegates to
the page default: the pane opens when the topic/session list is positioned on
the right in a main window. Explicit open/closed choices persist across page
re-entry.ResourceEntityRail (presentational, generic) + useResourceEntityRail (shared
behavior) power the classic left rail. AssistantResourceList and
AgentResourceList own data fetching, pins, deletion, icon display, and context
menus.
orderKey.When the topic/session position is right, the topic/session list is injected as
the first resource tab through ResourcePaneProvider / useResourcePane.
In classic layout the left rail owns entity switching, so the composer hides the assistant/agent switcher while the classic entity rail is active.
ChatComposer hides the assistant trigger when the assistant display mode is
active.AgentComposer hides the agent trigger when the agent display mode is active.onCreateEmptyTopic / onCreateEmptySession is available.Classic-layout agent chats keep the workspace control visible in the composer.
No DataApi endpoint filters topics/sessions by entity. The entity rail and right panel read the same full-list source and filter in the frontend.
useAssistantTopicsSource.useAgentSessionsSource.src/renderer/components/chat/resourceList/ResourceEntityRail.tsxsrc/renderer/components/chat/resourceList/useResourceEntityRail.tssrc/renderer/components/chat/resourceList/AssistantResourceList.tsxsrc/renderer/components/chat/resourceList/AgentResourceList.tsxsrc/renderer/components/chat/panes/Shell/resourcePane.tsxsrc/renderer/pages/home/HomePage.tsxsrc/renderer/pages/agents/AgentPage.tsxsrc/renderer/pages/agents/AgentChat.tsx