Skip to content

[Feature]: 会话全宽平铺切换(chat full-width tiled toggle) #2430

Description

@1688mengdie

Problem / opportunity

The chat reading column in the web UI is capped at a fixed 900px max-width (hard-coded in multiple SCSS rules). On wide windows or when the side panels are collapsed, users cannot expand the conversation to use the available width, forcing a narrow centered column even when there is plenty of horizontal space.

Proposed behavior

Add a full-width tiled toggle to the FlowChatHeader. When enabled, the chat reading column (message list, composer, runtime-status, explore region, file-modifications bar) stretches edge-to-edge instead of capping at 900px; the layout returns to the centered 900px column when the toggle is off, including when the chat pane is collapsed.

A new appearance token --bf-appearance-token-flowchat-content-max-width (default 900px) replaces the hard-coded 900px, so the full-width behavior is backed by the appearance token system and other surfaces keep their existing width.

Product surface

  • Web UI

Details, examples, or constraints

  • New layout.chatFullWidth boolean in LayoutState / DEFAULT_LAYOUT_STATE (src/web-ui/src/app/types/index.ts).
  • Fine-grained hooks useChatFullWidth and useToggleChatFullWidth in useApp.ts (uses useSyncExternalStore so only observing components re-render, and the action reads the manager directly).
  • Toggle button in FlowChatHeader.tsx (Maximize2 / Minimize2 icons), aria-label + tooltip via i18n.
  • i18n strings for en-US / zh-CN / zh-TW in flow-chat.json (layout.fullWidth.enter / layout.fullWidth.exit).
  • ChatPane / ChatInput / related SCSS rules switched from hard-coded 900px to the appearance token, plus a full-width modifier that removes the cap.
  • Focused test added in FlowChatHeader.test.tsx (session-fullwidth-toggle renders and flips the layout).
  • Verification: pnpm run type-check:web, i18n check (0 warnings), apperance/theme token build, vitest focused tests (6 passed).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions