Verified in the real web client
The long task drawer is contained now.
The bug was real: the expanded task list could grow to its full content height, putting the header controls beyond reach. The fix bounds only the list, gives it its own vertical scroll, and leaves collapse and dismiss controls fixed above it.
What changed
The task rows now live in an independently scrolling region. The drawer header remains outside that region and includes an explicit collapse chevron.
Content height versus visible task-list height; scrolling confirmed.
Every seeded task remains in the list, including the final row.
Focused component tests passed, plus format, lint, and web typecheck.
Implementation
The list uses max-height: min(24rem, 40dvh), overflow-y: auto, and contained overscroll. The header and composer controls are not part of the scrolling element.
Measured result
At 390 × 844, the drawer header and dismiss control stayed at y 378–398, the scroll region occupied y 404–742, and the composer remained fully visible through y 792.