Skip to content

fix(web): omit underlines on markdown image links - #17728

Merged
Yash-Singh1 merged 4 commits into
pingdotgg:mainfrom
Saikrishna1876:fix/coderabbit-button-underline
Oct 10, 2026
Merged

Yash-Singh1 merged 4 commits into
pingdotgg:mainfrom
Saikrishna1876:fix/coderabbit-button-underline

Conversation

@Saikrishna1876

Copy link
Copy Markdown
Contributor

Problem

Hovering a markdown image link draws a dotted text underline beside the image. This leaves blue dots around CodeRabbit's "Review Change Stack" button in pull request comments.

Change

Reuse the renderer's existing text detection to mark image-only links, then exclude them from the dotted hover and focus underline. Text links, including links with both text and images, keep their underline. The shared markdown renderer covers web and desktop chat, file previews, and pull request bodies and comments. Native mobile does not use this CSS.

Scope and approval

This is a small, focused fix for an obvious rendering defect under the CONTRIBUTING.md exception. It corrects the text decoration applied to image buttons without adding settings or changing link navigation.

Verification

  • vp test run apps/web/src/components/ChatMarkdown.test.tsx apps/web/src/components/ChatMarkdown.assets.test.tsx: 82 tests passed.
  • vp run --filter @t3tools/web typecheck: passed.
  • Targeted formatting passed; lint completed with five existing warnings outside the change.
  • In the development app, hovered the CodeRabbit image button and confirmed its anchor's computed background-image is none. Hovered the adjacent text link and confirmed the dotted radial-gradient underline remains.
  • CodeRabbit CLI review with the personal profile completed with zero findings. Greptile could not review because the upstream repository is not connected to that account.
  • Desktop shell and native mobile were not exercised separately.

Before, from the original report in dark mode:

Before: dotted underline beside the CodeRabbit image button

After, hovered button in the development markdown fixture in light mode:

After: CodeRabbit image button without the dotted underline

Model: gpt-6.1-sol. Harness: Codex through T3 Code.

@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 Oct 10, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 10, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at c5c01ad

Macroscope's review found this PR approvable — This is a small, self-contained web rendering fix that suppresses the dotted hover/focus decoration only for image-only markdown links while preserving existing text-link behavior and navigation. Its runtime impact is limited to presentation, with no new workflow, schema, configuration, or sensitive-area changes.

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

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Review in Change Stack →Review in Change Stack →

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e0b8c7eb-3c97-4fe8-9534-8c1895d63f06

📥 Commits

Reviewing files that changed from the base of the PR and between a129640 and f8335c3.


You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 69af324e-9067-4ccc-95aa-166b53fd941a




📥 Commits

Reviewing files that changed from the base of the PR and between c572cb7 and c5c01ad.





📒 Files selected for processing (2)
  • apps/web/src/components/ChatMarkdown.tsx
  • apps/web/src/index.css




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






📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough

Walkthrough

The Markdown renderer marks links without text with data-markdown-image-link. Hover and keyboard-focus underline styles exclude these links.

Changes

Markdown image-link styling

Layer / File(s) Summary
Mark and style image-only links
apps/web/src/components/ChatMarkdown.tsx, apps/web/src/index.css
The renderer computes whether an anchor has text once, uses the result to mark image-only links, and reuses it for favicon rendering. Hover and focus-visible underline styles exclude marked links.

Priority: ⬇️ Low

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

Change: Bug fix

Suggested reviewers: juliusmarminge








Merge Risk: ⚪ Minimal · up to c5c01

Image-only Markdown links no longer receive dotted hover or focus underlines, while text links retain them. No concrete merge-blocking risk remains; the change is ready for normal checks.

Pre-merge checks | Passed 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check Passed The title is concise, specific, and accurately describes the main change: removing underlines from markdown image links.
Description check Passed The description includes all required sections. It explains the problem, implementation, scope justification, verification results, limitations, and before/after screenshots.
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.







✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR







  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@Yash-Singh1
Yash-Singh1 merged commit d6f3af7 into pingdotgg:main Oct 10, 2026
27 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* fix(web): align compact button touch targets by @Yash-Singh1 in pingdotgg/t3code#17748
* fix(server): t3_thread_launch refuses a new worktree whose base ref has no commit by @tris203 in pingdotgg/t3code#17791
* fix(web): omit underlines on markdown image links by @Saikrishna1876 in pingdotgg/t3code#17728
* fix(server): restore auto resume for wrapped Claude gateway rate limits by @tzachbon in pingdotgg/t3code#17778
* fix(opencode): name OpenCode 2 sessions after their thread by @nkoynov in pingdotgg/t3code#17414
* fix(web): find update settings from the command palette by @sergical in pingdotgg/t3code#17396
* fix(provider-opencode): tell OpenCode Zen and Go models apart by @mr-karan in pingdotgg/t3code#17424
* fix(server): a pull that fast-forwards no longer fails on large Git output by @ScottN-PV in pingdotgg/t3code#17376
* fix(web): cancel question auto-advance after navigation by @maxwellyoung in pingdotgg/t3code#17364
* fix(server): a bare repository name resolves to the signed-in account again by @ScottN-PV in pingdotgg/t3code#17379
* fix(web): a maximized right panel stays maximized when you return to its thread by @jamesvillarrubia in pingdotgg/t3code#17327
* fix(mobile): allow starting a task with only an image by @Claudesaul in pingdotgg/t3code#17409
* fix(server): PR watch no longer reports passed while a second run of a check is still going by @ScottN-PV in pingdotgg/t3code#17344
* fix(server): say why a thread can't be settled by @DylanTX in pingdotgg/t3code#17258
* fix(server): prevent busy terminals from starving history persistence by @StiensWout in pingdotgg/t3code#17181
* feat(server): use macOS .icns app icons as project icons by @psv2522 in pingdotgg/t3code#17149
* fix(mobile): usage reset icon lines up with its row by @Aforno in pingdotgg/t3code#17175
* fix(web): paths pasted after @ keep their underscores by @derektrimm in pingdotgg/t3code#16619
* fix(server): settle every OpenCode subagent call one report answers by @nkoynov in pingdotgg/t3code#17134
* perf(web): switching project keeps Diagnostics and Providers mounted by @flamboh in pingdotgg/t3code#17122
* perf(web): Open Source Licenses downloads its manifest once per session by @flamboh in pingdotgg/t3code#17119
* fix(server): restore OpenCode adapter test typecheck by @Yash-Singh1 in pingdotgg/t3code#17810
* fix(server): Claude subagents show the reasoning effort they run at by @RakshithBhat03 in pingdotgg/t3code#17496

## New Contributors
* @tzachbon made their first contribution in pingdotgg/t3code#17778
* @sergical made their first contribution in pingdotgg/t3code#17396
* @mr-karan made their first contribution in pingdotgg/t3code#17424
* @Claudesaul made their first contribution in pingdotgg/t3code#17409
* @DylanTX made their first contribution in pingdotgg/t3code#17258
* @psv2522 made their first contribution in pingdotgg/t3code#17149

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2922...v0.0.46-nightly.20261010.2935

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2935
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 10, 2026
## What's Changed
* fix(web): align compact button touch targets by @Yash-Singh1 in pingdotgg/t3code#17748
* fix(server): t3_thread_launch refuses a new worktree whose base ref has no commit by @tris203 in pingdotgg/t3code#17791
* fix(web): omit underlines on markdown image links by @Saikrishna1876 in pingdotgg/t3code#17728
* fix(server): restore auto resume for wrapped Claude gateway rate limits by @tzachbon in pingdotgg/t3code#17778
* fix(opencode): name OpenCode 2 sessions after their thread by @nkoynov in pingdotgg/t3code#17414
* fix(web): find update settings from the command palette by @sergical in pingdotgg/t3code#17396
* fix(provider-opencode): tell OpenCode Zen and Go models apart by @mr-karan in pingdotgg/t3code#17424
* fix(server): a pull that fast-forwards no longer fails on large Git output by @ScottN-PV in pingdotgg/t3code#17376
* fix(web): cancel question auto-advance after navigation by @maxwellyoung in pingdotgg/t3code#17364
* fix(server): a bare repository name resolves to the signed-in account again by @ScottN-PV in pingdotgg/t3code#17379
* fix(web): a maximized right panel stays maximized when you return to its thread by @jamesvillarrubia in pingdotgg/t3code#17327
* fix(mobile): allow starting a task with only an image by @Claudesaul in pingdotgg/t3code#17409
* fix(server): PR watch no longer reports passed while a second run of a check is still going by @ScottN-PV in pingdotgg/t3code#17344
* fix(server): say why a thread can't be settled by @DylanTX in pingdotgg/t3code#17258
* fix(server): prevent busy terminals from starving history persistence by @StiensWout in pingdotgg/t3code#17181
* feat(server): use macOS .icns app icons as project icons by @psv2522 in pingdotgg/t3code#17149
* fix(mobile): usage reset icon lines up with its row by @Aforno in pingdotgg/t3code#17175
* fix(web): paths pasted after @ keep their underscores by @derektrimm in pingdotgg/t3code#16619
* fix(server): settle every OpenCode subagent call one report answers by @nkoynov in pingdotgg/t3code#17134
* perf(web): switching project keeps Diagnostics and Providers mounted by @flamboh in pingdotgg/t3code#17122
* perf(web): Open Source Licenses downloads its manifest once per session by @flamboh in pingdotgg/t3code#17119
* fix(server): restore OpenCode adapter test typecheck by @Yash-Singh1 in pingdotgg/t3code#17810
* fix(server): Claude subagents show the reasoning effort they run at by @RakshithBhat03 in pingdotgg/t3code#17496

## New Contributors
* @tzachbon made their first contribution in pingdotgg/t3code#17778
* @sergical made their first contribution in pingdotgg/t3code#17396
* @mr-karan made their first contribution in pingdotgg/t3code#17424
* @Claudesaul made their first contribution in pingdotgg/t3code#17409
* @DylanTX made their first contribution in pingdotgg/t3code#17258
* @psv2522 made their first contribution in pingdotgg/t3code#17149

**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261010.2922...v0.0.46-nightly.20261010.2935

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261010.2935
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.

2 participants