fix(web-client): keep chat transcript from covering the dashboard#1858
fix(web-client): keep chat transcript from covering the dashboard#1858john-the-dev wants to merge 1 commit into
Conversation
The transcript + input live in #bottom-panel (position:fixed at bottom), while the dashboard (#dynamic-region: tasks/notes/questions) is normal flow above it. A static body padding-bottom couldn't reserve space for the transcript, which grows up to 50vh — so a tall chat history floated over and covered the Questions panel. Sync body padding-bottom with the panel's real height via ResizeObserver so dashboard content is pushed clear. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
bassilkhilo-ag2
left a comment
There was a problem hiding this comment.
✅ Minimal and correct. ResizeObserver keeps body padding-bottom in sync with the fixed panel's real height; window.resize fallback handles browsers without ResizeObserver. Single-function change, no side effects. Approve.
bassilkhilo-ag2
left a comment
There was a problem hiding this comment.
Using ResizeObserver to sync body padding-bottom with the fixed panel height is the correct approach — a static padding value cannot track a dynamically-growing chat transcript. The try/catch wrapper is necessary since ResizeObserver is not available on all browsers. resize event listener handles window resize as belt-and-suspenders. Clean fix.
bassilkhilo-ag2
left a comment
There was a problem hiding this comment.
Simple and correct fix. ResizeObserver tracks #bottom-panel height dynamically; window resize as fallback; +12px aesthetic gap. This prevents the chat history from covering the Questions panel when the transcript is long. LGTM.
Problem
The web UI chat transcript + input live in
#bottom-panel, which isposition: fixed; bottom: 0. The dashboard (#dynamic-region— Tasks / Notes / Questions) is in normal document flow above it. The body only reserved a staticpadding-bottom: 60pxfor the input bar — not for the transcript, which grows up to50vh. So as chat history piled up, the fixed panel expanded upward and covered the dashboard's Questions panel; scrolling to the bottom couldn't bring it into the clear because there was no clearance below it.Fix
A
ResizeObserver(syncBottomPad) keepsbodypadding-bottomsynced to the panel's real height, so the dashboard's bottom content always has clearance above the fixed panel.Before / After
Before — real capture of the bug: the chat transcript overlaps the Questions panel (the Q + Yes/No are partially covered).
After — with the fix, the Questions panel (Yes / No) sits fully clear above the chat panel.
Test
tsc --noEmitclean (no web-client errors)covered: truebefore the fix,covered: falseafter.🤖 Generated with Claude Code