Skip to content

fix(mobile): keep the machine glyph next to the environment label - #9486

Merged
juliusmarminge merged 1 commit into
mainfrom
t3code/mobile-machine-glyph-placement
Sep 3, 2026
Merged

fix(mobile): keep the machine glyph next to the environment label#9486
juliusmarminge merged 1 commit into
mainfrom
t3code/mobile-machine-glyph-placement

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Sep 3, 2026

Copy link
Copy Markdown
Member

Problem

On the mobile thread list, the machine glyph that #9299 added lands at the far right of the subtitle row, next to the PR number and provider icon, instead of after the environment name it describes. The subtitle Text was flex-1, so it swallowed the horizontal slack and pushed the glyph away from nucbox-1.

Fix

The text now shrinks inside a flex-1 wrapper that takes the slack, so the row reads main · nucbox-1 ▭ with the glyph hugging the label, and the PR and provider trailers stay pinned right. Only the v2 thread row needed this; the pending row and the v1 rows already placed the glyph beside the label.

The glyph can't live inside the Text itself without breaking single-line truncation, which is why it sits as a sibling.

Before / after

BeforeAfter
beforeafter

Rows with a branch, environment label, and linked PR, where the slack between label and trailers is widest. Before, the glyph sat with the PR number; after, it follows the label. iPhone 17 Pro simulator, dev client on this branch against a disposable backend seeded from real data.

Verification

Mobile typecheck and lint pass. Layout-only change.

Built with Claude Fable 5 in Claude Code.

🤖 Generated with Claude Code


Note

Low Risk
Layout-only change in the mobile thread list subtitle row; no API, auth, or data handling impact.

Overview
Fixes v2 thread list subtitle layout so EnvironmentMachineSymbol sits immediately after the branch/environment text (main · nucbox-1 ▭) instead of at the far right beside the PR and provider icons.

The branch/label line is wrapped in a flex-1 row: truncating Text uses shrink (not flex-1), and the glyph is a sibling inside that wrapper so single-line ellipsis still works. The old row-level glyph (shown when not failed) is removed in favor of the in-wrapper placement when both environmentLabel and environmentMachine are set.

Reviewed by Cursor Bugbot for commit 36dec6d. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Keep machine glyph next to environment label in ThreadListV2Row

Reworks the branch/environment metadata row into a flexible horizontal wrapper that truncates the text while keeping the machine symbol adjacent to the environment label. The PR and provider trailers remain positioned after the flexible metadata area, and the machine symbol stays suppressed for failed rows.

📊 Macroscope summarized 36dec6d. 1 file reviewed, 1 issue evaluated, 0 issues filtered, 1 comment posted

🗂️ Filtered Issues

The v2 thread row's subtitle text was flex-1, so the glyph landed at the
far right beside the PR and provider trailers instead of after the
environment name it belongs to. The text now shrinks inside a wrapper that
takes the slack, so the glyph hugs the label and the trailers stay pinned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Sep 3, 2026
</Text>
) : null}
</Text>
{props.environmentLabel && props.environmentMachine ? (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Mediumthreads/thread-list-v2-items.tsx:784

Failed rows now render the machine glyph whenever environmentLabel and environmentMachine are present, including failures without lastError; this regresses the intended failed-row presentation. Restore the status !== "failed" guard on the glyph condition.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/mobile/src/features/threads/thread-list-v2-items.tsx around line 784:
Failed rows now render the machine glyph whenever `environmentLabel` and `environmentMachine` are present, including failures without `lastError`; this regresses the intended failed-row presentation. Restore the `status !== "failed"` guard on the glyph condition.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Not a regression. The glyph now lives inside the thread.branch || environmentLabel branch, which only renders when status === "failed" && lastError is false, so a failed row that has an error message still shows the red text and no glyph, exactly as before. A failed row without an error message never had a distinct presentation: the old code also fell through to the "branch · env" line and drew the label, and the old status !== "failed" guard only suppressed the icon next to that label. Drawing the label without its glyph was an accidental asymmetry, so the glyph following the label whenever the label renders is the intended behavior.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This does change failed rows without lastError: the previous explicit guard hid their glyph. I found no evidence that removing that distinction was intended, so the original concern stands.

@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire13.5 KiB13.5 KiB−4 B (−0.0%)15.1 KiB
CodexThread snapshot wire7.0 KiB7.0 KiB−6 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.5 KiB6.5 KiB+2 B (+0.0%)7.8 KiB
CodexLive turn WebSocket decoded57.0 KiB57.0 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages880 (0.0%)21
ClaudeTotal thread wire13.7 KiB13.5 KiB−286 B (−2.0%)15.1 KiB
ClaudeThread snapshot wire7.0 KiB7.0 KiB+11 B (+0.2%)7.3 KiB
ClaudeLive turn WebSocket wire6.7 KiB6.4 KiB−297 B (−4.3%)7.8 KiB
ClaudeLive turn WebSocket decoded59.3 KiB57.0 KiB−2.3 KiB (−3.9%)66.4 KiB
ClaudeLive turn messages108−2 (−20.0%)21

Baseline: 373be93 · PR result: 36dec6d · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.8 KiB
  • Claude decoded thread snapshot: 114.5 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeapp

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Would Approve

Macroscope's review found this PR approvable — This is a focused mobile presentation fix that keeps the machine glyph beside the environment label without affecting application state or backend behavior. The current diff also shows the glyph on failed rows without an error message, so that Medium-severity regression must be resolved before merge.

Not approved because:

  • 1 blocking correctness issue found at or above your repo's Minimum Blocking Severity

Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge merged commit 409bc4f into mainSep 3, 2026
22 checks passed
@juliusmarminge
juliusmarminge deleted the t3code/mobile-machine-glyph-placement branch September 3, 2026 22:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S10-29 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge