Profiled the auto-scroll-to-bottom effect during real LLM streaming
and found it was firing 37 scrollTo() calls in 2.87s — 33 of them
with `behavior: 'smooth'`. Each smooth-scroll animation queues
behind the previous one and gets interrupted before completing,
producing visibly jerky scroll throughout streaming.
Fix: drop `requestAnimationFrame(() => scrollTo({ behavior }))` and
use direct `scrollTop = scrollHeight`. That's instant, idempotent,
and no animation queue to thrash. Same effect, none of the jank.
Verified live with the smoke app + a LangGraph dev backend hitting
gpt-4o-mini. The same prompt that previously triggered 33 smooth
scrolls now triggers 0 scrollTo calls and 1 scrollTop write —
exactly the silent, instant settle we want.
Bumps @ngaf/chat to 0.0.8.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>