Skip to content

fix(web): the pull request badge reads at the meta size again - #13175

Merged
juliusmarminge merged 1 commit into
mainfrom
fix/pr-badge-text-size
Sep 23, 2026
Merged

juliusmarminge merged 1 commit into
mainfrom
fix/pr-badge-text-size

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Sep 23, 2026

Copy link
Copy Markdown
Member

#13034 rendered the thread pull request badge through InlineButton in the sidebar and Button size="xs" in the composer. Both brought their own type: font-medium, plus 14px from the one-line sidebar row or from Button below sm. The ghost Button also muted the glyph, so the badge grew and lost its state color.

The badge now takes a render prop for the control it sits in, and owns only its content: the glyph and number at text-xs, regular weight, tabular figures, in the state tone. Base UI's useRender merges the badge's element (the link, or the stack button) and its click behavior into that control, the same way every components/ui export composes render.

  • Sidebar row: render={<InlineButton />}
  • Composer: render={<ComposerControl size="xs" />}, the same control as the model and branch pickers next to it

This also drops one no-restyle finding (the tone className on Button), so the ceiling goes 628 → 627.

Measured in a real client: 12px/400 in the state color in both places. The composer control is 24px tall on desktop and 28px on narrow, matching its neighbours.

Before (main) After
Sidebar row Sidebar badge before, medium weight Sidebar badge after, regular weight
Composer (narrow) Composer badge before, 14px medium with grey glyph Composer badge after, 12px with green glyph

Composer on desktop, after: Composer badge after on desktop, next to the branch picker

Claude Opus 5.5 via Claude Code.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Refactor
    • Updated thread status controls with more consistent link and button styling.
    • Preserved existing pull request and stack action behavior, accessibility labels, pointer handling, and tooltips.
    • Improved control rendering in branch selectors and sidebars for a more consistent interface.
    • Pull request badges now integrate more naturally with surrounding controls while maintaining their existing functionality.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 23, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Sep 23, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at d6287ee

Macroscope's review found this PR approvable — This is a narrowly scoped UI bug fix that reuses existing button primitives to restore the pull-request badge’s meta-sized presentation without changing data, navigation intent, or broader workflows. The lint-threshold update only tightens CI enforcement, and the open feedback is limited to a non-blocking primitive-consistency concern.

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

{...linkProps}
/>
isStack ? (
<button type="button" {...triggerProps} />

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.

Shared primitives over custom controls: this styled raw <button> rebuilds the existing Button control. Please render it through Button from components/ui/button instead.

Suggested fix: restore the Button primitive and its import; this requires changes outside this hunk, so no inline diff is provided.

Posted via Macroscope — UI Consistency

@macroscopeapp

macroscopeapp Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

UI consistency review completed with one inline finding.

Posted via Macroscope — UI Consistency

@github-actions

github-actions Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.5 KiB 13.5 KiB +18 B (+0.1%) 15.1 KiB
Codex Thread snapshot wire 7.1 KiB 7.0 KiB −4 B (−0.1%) 7.3 KiB
Codex Live turn WebSocket wire 6.5 KiB 6.5 KiB +22 B (+0.3%) 7.8 KiB
Codex Live turn WebSocket decoded 56.3 KiB 56.3 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 10 10 0 (0.0%) 21
Claude Total thread wire 13.5 KiB 13.5 KiB −42 B (−0.3%) 15.1 KiB
Claude Thread snapshot wire 7.1 KiB 7.1 KiB −3 B (−0.0%) 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 6.4 KiB −39 B (−0.6%) 7.8 KiB
Claude Live turn WebSocket decoded 57.1 KiB 57.0 KiB −44 B (−0.1%) 66.4 KiB
Claude Live turn messages 10 9 −1 (−10.0%) 21

Baseline: 2eaff08 · PR result: d6287ee · 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: 114.0 KiB
  • Claude decoded thread snapshot: 114.6 KiB

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

@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: 94b1e215-b98d-4d16-a127-988e12afe0cc

📥 Commits

Reviewing files that changed from the base of the PR and between 7c6fc07 and d6287ee.

📒 Files selected for processing (1)
  • apps/web/src/components/ThreadStatusIndicators.tsx

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


📝 Walkthrough

Walkthrough

ThreadPullRequestBadgeControl now accepts a caller-provided render element. The branch toolbar and sidebar provide specific controls. The component preserves stack and pull-request behavior. The restyle lint ceiling decreases from 628 to 627.

Changes

Thread status controls

Layer / File(s) Summary
Direct trigger rendering
apps/web/src/components/ThreadStatusIndicators.tsx
ThreadPullRequestBadgeControl accepts a render element instead of a variant. It uses useRender to add stack-button or pull-request-link behavior, accessibility labels, pointer handling, click handling, and badge styling.
Caller renderer integrations
apps/web/src/components/BranchToolbarBranchSelector.tsx, apps/web/src/components/Sidebar.tsx
The branch toolbar supplies ComposerControl. The sidebar supplies InlineButton.

Restyle ceiling

Layer / File(s) Summary
Lint threshold update
scripts/lint-restyle-ceiling.ts
RESTYLE_CEILING decreases from 628 to 627.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Suggested reviewers: maria-rcks

Merge Risk: ⚪ Minimal · up to d6287

The trigger-rendering and styling update appears ready to merge.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes the pull request badge styling fix.
Description check ✅ Passed The description clearly explains the change, the reason, the implementation, and the UI results. It includes before-and-after screenshots. The formal Checklist section is absent, but the required info…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

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

@macroscopeapp
macroscopeapp Bot dismissed their stale review September 23, 2026 01:23

Dismissing prior approval to re-evaluate 7c6fc07

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Sep 23, 2026
#13034 rendered the thread pull request badge through InlineButton in the
sidebar and Button size="xs" in the composer. Both brought their own
type (font-medium, and 14px from the row or from Button below sm), and the
ghost Button muted the glyph, so the badge grew and lost its state color.

The badge now takes a render prop for the control it sits in and owns
only its content: the glyph and number at text-xs, regular weight,
tabular figures, in the state tone. The sidebar row renders it in an
InlineButton, the composer in ComposerControl size="xs" like its
neighbours, and the badge fills in the link or stack-button element.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@macroscopeapp
macroscopeapp Bot dismissed their stale review September 23, 2026 01:55

Dismissing prior approval to re-evaluate d6287ee

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 23, 2026
@macroscopeapp

This comment has been minimized.

@juliusmarminge
juliusmarminge merged commit 6975efd into main Sep 23, 2026
24 of 25 checks passed
@juliusmarminge
juliusmarminge deleted the fix/pr-badge-text-size branch September 23, 2026 02:00
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 23, 2026
## What's Changed
* chore(mobile): drop dead nitro-markdown tgz override and @expo/metro-runtime by @juliusmarminge in pingdotgg/t3code#13148
* feat(web): show settings scope as a sentence at the top of the page by @juliusmarminge in pingdotgg/t3code#13139
* refactor(web): move settings scope pickers into breadcrumbs by @Yash-Singh1 in pingdotgg/t3code#13165
* feat(auth): share provider sign-in flows and credential bindings by @juliusmarminge in pingdotgg/t3code#12983
* refactor(mobile): git sheets use uniwind platform variants instead of className ternaries by @juliusmarminge in pingdotgg/t3code#13161
* chore(mobile): name the two project favicon caches by their job by @juliusmarminge in pingdotgg/t3code#13160
* revert(mobile): git sheets back to Platform.OS ternaries (un-guarded uniwind variants broke both platforms) by @juliusmarminge in pingdotgg/t3code#13169
* docs(mobile): document the two mobile routes that intentionally skip deep links by @juliusmarminge in pingdotgg/t3code#13164
* refactor(mobile): break module cycles with focused extractions by @juliusmarminge in pingdotgg/t3code#13151
* fix(server): generate PR diffs from branch changes by @Yash-Singh1 in pingdotgg/t3code#13170
* fix(web): preserve nested scroll behavior in chat timeline by @Yash-Singh1 in pingdotgg/t3code#13167
* test(web): cover usage model ordering without static markup by @flamboh in pingdotgg/t3code#13104
* fix(desktop): find linuxbrew node for the WSL backend by @CodyRay in pingdotgg/t3code#7827
* chore(models): use GPT-6 Luna for text generation by @extoci in pingdotgg/t3code#13115
* fix(mobile): keep ordinary offline outbox failures out of console.warn by @juliusmarminge in pingdotgg/t3code#13144
* feat(providers): check remote compatibility ranges by @juliusmarminge in pingdotgg/t3code#13130
* chore(lint): keep mobile theme escape-hatch allowlist honest by @juliusmarminge in pingdotgg/t3code#13146
* fix(web): the pull request badge reads at the meta size again by @juliusmarminge in pingdotgg/t3code#13175
* fix(mobile): uniwind platform variants stay guarded on both platforms by @juliusmarminge in pingdotgg/t3code#13172
* refactor(mobile): git sheets use uniwind platform variants instead of className ternaries by @juliusmarminge in pingdotgg/t3code#13185
* refactor(mobile): remaining className platform ternaries become class variants by @juliusmarminge in pingdotgg/t3code#13188
* fix(web): align provider emails without clipping by @Derpedyea in pingdotgg/t3code#13174
* perf(mobile): recycle the default v2 home list and scope the snooze minute tick by @juliusmarminge in pingdotgg/t3code#13149
* refactor(mobile): retire the legacy grouped thread list by @juliusmarminge in pingdotgg/t3code#13183
* fix(server): background PR checks spend less GitHub quota by @juliusmarminge in pingdotgg/t3code#13189
* fix(server): background PR sync reads summaries in batches by @juliusmarminge in pingdotgg/t3code#13198
* fix(server): GitHub PR lookups stop probing owner-qualified heads by @juliusmarminge in pingdotgg/t3code#13200
* chore(mobile): clear the legacy-list deletion fallout by @juliusmarminge in pingdotgg/t3code#13203

## New Contributors
* @CodyRay made their first contribution in pingdotgg/t3code#7827

**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260922.2123...v0.0.43-nightly.20260923.2135

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

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR 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