Skip to content

fix(mobile): prevent overlapping text and UI on Android chat messages - #11611

Merged
juliusmarminge merged 2 commits into
pingdotgg:mainfrom
Exotic209093:fix/android-chat-overlap
Sep 17, 2026
Merged

juliusmarminge merged 2 commits into
pingdotgg:mainfrom
Exotic209093:fix/android-chat-overlap

Conversation

@Exotic209093

@Exotic209093 Exotic209093 commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Assistant message containers had no width constraint, so Android Yoga unclamped-pass layout caused timestamps and copy buttons to overlap message text. List item content columns also lacked flexShrink, letting favicon icons bleed into text. Applied the same hasWideMarkdownBlock width-pinning already used for user bubbles, added flexShrink and overflow hidden to list content, and pinned favicon images to fixed size.

Fixes #11119

Summary by CodeRabbit

  • Bug Fixes
    • Improved Markdown rendering in assistant messages to prevent wide content from breaking the message layout.
    • Preserved link icon sizing and contained oversized list content for more consistent display.
    • Improved assistant message width handling when Markdown includes wide blocks, helping maintain alignment and readability across different screen sizes.

@cursor

cursor Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 13, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-13T18:20:12.239781Z a38624b PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Sep 13, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at a38624b

Macroscope's review found this PR approvable — This is a focused Android/mobile rendering fix that constrains markdown layout and preserves fixed-size icons to prevent chat text and controls from overlapping. It changes only localized presentation behavior and introduces no schema, security, billing, infrastructure, or product-default changes.

You can add or adjust custom eligibility rules. Learn more.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a38624ba75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// bubbles: wide markdown blocks cause children to be positioned at
// intrinsic width before the container is clamped, overlapping the
// timestamp/copy button row. Pinning the width removes that pass.
const assistantHasWideBlock = hasWideMarkdownBlock(message.text, WIDE_MARKDOWN_BLOCK_OPTIONS);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reuse the existing wide-block result

For every assistant-message render, this repeats the identical hasWideMarkdownBlock call already made in hasWideBlock above. On Android, ordinary long messages without an early match make the helper split and scan the entire message twice; while an assistant response is streaming, that redundant linear work and allocation recurs on every update in the performance-sensitive feed. Use the existing hasWideBlock value for the assistant width condition instead.

AGENTS.md reference: AGENTS.md:L15-L17

Useful? React with 👍 / 👎.

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: bd844c7a-72fc-422b-a387-2bf80967122f

📥 Commits

Reviewing files that changed from the base of the PR and between da09034 and 66f3d90.

📒 Files selected for processing (1)
  • apps/mobile/src/features/threads/ThreadFeed.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The mobile thread feed prevents inline link icons from shrinking, contains wide markdown list content, and applies full width to assistant rows with wide markdown blocks.

Changes

Android message layout

Layer / File(s) Summary
Markdown and assistant layout containment
apps/mobile/src/features/threads/ThreadFeed.tsx
Inline link icons no longer shrink. Markdown list content uses shrink and overflow utility classes. Assistant rows with wide markdown blocks use w-full.

Priority: ⬆️ High

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: High

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 66f3d

The Android layout containment changes have no identified correctness, availability, security, or data-integrity risk.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 1 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the primary change: preventing overlapping text and UI in Android chat messages.
Description check ✅ Passed The description explains the layout problem, the implemented fix, and the linked issue. It does not use the template headings or include the required before-and-after screenshots for this UI change.
Linked Issues check ✅ Passed The PR addresses the coding requirements in issue #11119. ThreadFeed.tsx applies w-full to assistant rows when wide Markdown blocks exist. List content uses shrink and overflow containment. Inline…
Out of Scope Changes check ✅ Passed The PR changes only apps/mobile/src/features/threads/ThreadFeed.tsx. The width, shrink, overflow, and icon sizing changes directly support the Android chat overlap fixes in issue #11119. No unrelate…
  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

Sowyu pushed a commit to Sowyu/t3pretzel that referenced this pull request Sep 15, 2026
Fixes reproduced on an Android emulator and from upstream reports.

Feed: Android stops drawing a text view past the GPU's maximum texture
height, so a long list rendered as one selectable Text lost its tail and
took seconds per frame to draw. Long lists now split into 40-item chunks.
Wide assistant markdown blocks keep a pinned width; the feed reserves
bottom padding.

Keyboard: the feed re-pins after keyboard transitions settle and when the
composer collapses; the back gesture collapses the composer; sticky
composers only follow the keyboard after a fresh show or real focus
(upstream pingdotgg#8212).

Terminal: hardware Enter no longer moves focus off the terminal; keyboards
that use deleteSurroundingText (FUTO) send Backspace; forward delete works.

Also: stream haptics no longer buzz every 320ms on Android and all haptics
use the system engine; thread settings apply on tap without Save; typed
pairing codes are normalized to the server format; non-git projects fall
back to the current checkout instead of a dead worktree default; user CA
certificates are trusted; Ctrl/Cmd+Enter sends from a hardware keyboard;
thread rename, project favicons in the filter, tablet sidebar toggle,
desktop-window density, route titles, Material You review colors, bottom
gesture-bar insets, and the composer placeholder clipping (upstream PRs
pingdotgg#11503, pingdotgg#11370, pingdotgg#11339, pingdotgg#8200, pingdotgg#8717, pingdotgg#11445, pingdotgg#6003, pingdotgg#5052, pingdotgg#8362, pingdotgg#10709,
pingdotgg#11611, pingdotgg#8800, adapted).
@Exotic209093
Exotic209093 force-pushed the fix/android-chat-overlap branch from a38624b to da09034 Compare September 16, 2026 09:35
@Exotic209093

Copy link
Copy Markdown
Contributor Author

Rebased onto latest main and resolved the conflict in ThreadFeed.tsx (kept main's mb-1 spacing together with the width-pinning style).

@juliusmarminge
juliusmarminge enabled auto-merge (squash) September 17, 2026 18:10
@juliusmarminge
juliusmarminge merged commit 8db3c25 into pingdotgg:main Sep 17, 2026
19 of 20 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 18, 2026
## What's Changed
* fix(web): keep thoughts and failed tool calls in one activity row by @maria-rcks in pingdotgg/t3code#12270
* fix(web): avoid reopening settled threads when adding projects by @dominic-r in pingdotgg/t3code#11804
* feat(mobile): make Settings easier to navigate and scope by @juliusmarminge in pingdotgg/t3code#12272
* fix(mobile): prevent overlapping text and UI on Android chat messages by @Exotic209093 in pingdotgg/t3code#11611
* feat(web): pull request files can be marked as viewed by @yordis in pingdotgg/t3code#7721
* fix(web): keep composer banners compact and readable by @Bil0000 in pingdotgg/t3code#12166
* fix(web): collapse thoughts within tool groups by @maria-rcks in pingdotgg/t3code#12302
* fix(usage): preserve saved totals after transcript cleanup by @maria-rcks in pingdotgg/t3code#12304
* fix(mobile): show Agent behavior icon on Android by @juliusmarminge in pingdotgg/t3code#12316

## New Contributors
* @Exotic209093 made their first contribution in pingdotgg/t3code#11611

**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260917.1866...v0.0.43-nightly.20260917.1880

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260917.1880
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Android mobile app renders overlapping text and UI elements in chat messages

2 participants