Skip to content

[Bug]: iOS TestFlight thread view — header and usage-limit banner overlay message content #15652

Closed

Description

@alhassanaraouf

Area

apps/mobile

Steps to reproduce

  1. On TestFlight 2.0.0 (103), open any thread with long history (e.g. "Set up emda... / fedraone-portal").
  2. Scroll the message list up/down.
  3. 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

  1. Top nav header is translucent/floating — message text scrolls underneath and is clipped behind the back button, title, and toolbar icons (see IMG_4723).
  2. 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).
  3. Bottom composer ("Ask the repo agent...") overlaps the last transcript rows.

Screenshots

image
image

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.

Activity

  1. juliusmarminge commented on Oct 4, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Triage

    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.

    A maintainer will decide on the fix direction.

  2. added
    bugSomething is broken or behaving incorrectly.
    via-triageFiled through npx t3 triage
    on Oct 4, 2026
  3. alhassanaraouf commented on Oct 14, 2026

    @alhassanaraouf
    Author

    fixed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions