Skip to content

🐛 Conversation workspace does not fit the viewport at any width #690

Description

@jrosseel

Symptom

The conversation workspace does not fit the viewport, and the failure differs by width. Observed 2026-08-19 on testv4 at chart 0.9.2, SPA sha256:f8aeb38a.

At a narrow width (~1073px): the transcript is clipped to a few hundred pixels, the composer sits mid-page, and the Activity/Files panel is pushed below the fold as a second block with a large empty area beside it. The whole page scrolls.

At a wide width (~1768px): the layout is correct at the top, but the page still extends past the viewport — a band of empty space runs below the composer and below the Activity panel, and the sidebar's "You / Private workspace" footer is not pinned to the bottom of the screen.

Expected

The workspace is an application shell, not a document: it should occupy exactly the viewport height, with the transcript as the only scrolling region. The sidebar, the conversation header, the composer, and the Activity panel should all stay fixed in place, and the page itself should never scroll.

Todo

  • Give the shell an explicit viewport-height constraint rather than letting content determine height (100dvh100vh is wrong on mobile browsers where the toolbar overlays it).
  • Make the transcript the single overflow-y: auto region; every sibling stays flex: none.
  • Fix the Activity panel's placement at narrow widths: it currently reflows below the conversation instead of staying a side panel or becoming an overlay. Decide which of the two it should be under a breakpoint, and apply it.
  • Pin the sidebar footer to the bottom of the sidebar.
  • Cover both widths in the Storybook visual contracts so the regression cannot return — the component tests are the gate for this, not manual checking.

Notes

The storybook_visual CI job renders component contracts, so the fixtures for the workspace shell are where the two widths should be pinned. Baselines are platform-specific (tests/storybook/__screenshots__/{darwin,linux}), so refresh the Linux baselines from a CI run's -actual.png rather than locally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions