You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On TestFlight 2.0.0 (103), open any thread with long history (e.g. "Set up emda... / fedraone-portal").
Scroll the message list up/down.
Trigger a usage-limit state so the amber "Usage limit resets..." banner shows.
Expected behavior
Header, usage-limit banner, and bottom composer reserve layout space / respect safe area, so message text is never rendered underneath them.
Actual behavior
Top nav header is translucent/floating — message text scrolls underneath and is clipped behind the back button, title, and toolbar icons (see IMG_4723).
Amber "Usage limit resets 04/10/2026, 7:00:00 PM" banner plus "Cancel auto-resume / Snooze until reset" buttons overlay the message list — texts collide, both unreadable (see IMG_4722).
Bottom composer ("Ask the repo agent...") overlaps the last transcript rows.
Screenshots
Impact
Major degradation or frequent failure
Version or commit
2.0.0 (Build 103) via TestFlight
Environment
iPhone, iOS 27.0.1, T3 Code iOS 2.0.0 (103) TestFlight
Logs or stack traces
N/A — layout/UI issue.
Workaround
None — scrolling only temporarily moves text out from under the overlays.
Thanks for the report and the screenshots, @alhassanaraouf. They line up closely with the code on main for the thread screen.
What I found
I see two separate causes behind the overlap.
Header. The bar is transparent by design. It uses the liquid-glass setup in apps/mobile/src/Stack.tsx (headerTransparent plus UIKit's automatic scroll-edge effect), so content is meant to scroll under it and fade at the edge. The thread list deliberately doesn't set a manual contentInset (ThreadFeed.tsx) so that fade has room to render. In your screenshots the fade isn't happening: message text stays fully readable behind the back button, title, and toolbar. That's the bug in this part.
Usage-limit card and composer.UsageLimitRecoveryCard is mounted inside the absolutely positioned composer overlay in ThreadDetailScreen.tsx, above ThreadComposer. Its measured height is only applied as an end inset, which pads the bottom of the scroll content, so rows in a long thread still scroll under the card. The composer under it uses a gradient from fully transparent to mostly opaque (from-screen/0 via-screen/60 to-screen/90 in ThreadComposer.tsx), so the last rows show through. On web, the same recovery notice sits in the in-flow composer banner stack, so the transcript stops above it.
The report has enough detail to reproduce: open a long thread, scroll it, and put the thread into the usage-limit state so the amber card shows.
Likely fix area
Header: the scroll-edge fade between Stack.tsx and ThreadFeed.tsx, so content actually fades under the glass bar. An opaque bar would be a separate design change.
Usage-limit card: one option is to make the card's height shrink the visible list instead of only padding the end, which is how web places it. Another is to move it into the in-flow layout.
Composer: the opacity of the gradient where it overlaps the last transcript rows.
Activity
juliusmarminge commentedon Oct 4, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks for the report and the screenshots, @alhassanaraouf. They line up closely with the code on
mainfor the thread screen.What I found
I see two separate causes behind the overlap.
Header. The bar is transparent by design. It uses the liquid-glass setup in
apps/mobile/src/Stack.tsx(headerTransparentplus UIKit's automatic scroll-edge effect), so content is meant to scroll under it and fade at the edge. The thread list deliberately doesn't set a manualcontentInset(ThreadFeed.tsx) so that fade has room to render. In your screenshots the fade isn't happening: message text stays fully readable behind the back button, title, and toolbar. That's the bug in this part.Usage-limit card and composer.
UsageLimitRecoveryCardis mounted inside the absolutely positioned composer overlay inThreadDetailScreen.tsx, aboveThreadComposer. Its measured height is only applied as an end inset, which pads the bottom of the scroll content, so rows in a long thread still scroll under the card. The composer under it uses a gradient from fully transparent to mostly opaque (from-screen/0 via-screen/60 to-screen/90inThreadComposer.tsx), so the last rows show through. On web, the same recovery notice sits in the in-flow composer banner stack, so the transcript stops above it.The report has enough detail to reproduce: open a long thread, scroll it, and put the thread into the usage-limit state so the amber card shows.
Likely fix area
Stack.tsxandThreadFeed.tsx, so content actually fades under the glass bar. An opaque bar would be a separate design change.A maintainer will decide on the fix direction.
alhassanaraouf commentedon Oct 14, 2026
fixed