fix(web): name the sidebar logo link T3 Code home#24209

merged2
main
issue-watch/24203
opened7d agobySshivam
View on GitHubTwo-way sync enabledPR last imported 22h ago

Problem

The sidebar logo is announced as “Go to threads”, although activating it opens the app’s startup composer. Its accessible name also omits the visible “T3 Code” branding, so voice-control users cannot identify it by the text they see.

Change

Name the existing logo link “T3 Code home”. Its destination and visual appearance stay the same. This preserves the existing fix and author credit in this PR.

Scope and approval

Fixes https://github.com/pingdotgg/t3code/issues/24203

GitCafe: #24203

Triaged bug via the automated issue flow. Reused this existing PR; no duplicate PR was opened.

Verification

  • Reproduced on main 27e0c68 in the real web app: the accessibility tree names the link “Go to threads”; activating it opens /draft/... with the startup composer.
  • vp lint apps/web/src/components/sidebar/SidebarChrome.tsx: passed.
  • Web typecheck (tsc --noEmit -p apps/web): passed.
  • No automated test was added: the change is one literal accessible-name string; an attribute assertion would mirror the implementation, and navigation already succeeds on main.
  • The shared header covers current, legacy, and Settings sidebars on web and Electron. Native mobile uses a separate threads-list control and is unaffected. No provider, contract, or connection-mode behavior changes.

Both isolated reviewers approved the integrated diff. The final independent proof audit passed every mandatory row, verified all 227 retained artifacts, and reproduced one capture with zero pixel differences.

Evidence

Full evidence index, environment details, recordings, accessibility snapshots, and replay drivers. Captures use the actual main and integrated PR revisions. Retained pairs have zero changed RGB pixels; the accessible name changes from “Go to threads” to “T3 Code home”, with href / on both.

The CSS viewport is stated in each row; collaborative Chromium uses DPR 2 and scales saved PNGs. The index records image dimensions, font stack, frozen clock, reduced motion, and strict equality of two settled frames 500 ms apart.

InteractionBefore · 27e0c68After · 7e3da10
Focus, Enter to draft, draft reuse, collapse/reopenrecordingrecording
Legacy sidebar: focus and pointer activationrecordingrecording
Settings sidebar: focus and Enterrecordingrecording
Open narrow sidebar drawer; brand remains hiddenrecordingrecording

Scripted steps and timestamps. The index includes the corresponding computed-name and href snapshots for every row. Recordings show checkout-specific Git details at the destination; matched stills close that panel. No visible differences occur in the retained matched stills (zero threshold).

Windows/macOS Electron, screen-reader speech, and the conditional hosted-disconnected state were not verified. Native mobile has a separate unchanged control.

Supplemental desktop and Nightly proof

The following supplements supersede the initial browser index’s provisional R4, Nightly R3/S3, and S5 statuses. All required rows are now captured.

Linux Electron evidence and replay drivers · Nightly and zero-project evidence and replay drivers.

Linux Electron 44.9.3 uses a 1440×900 content viewport, DPR 1, light/plain appearance, the real desktop bridge, and desktop hash routing (/#/) over the Vite development origin. Nightly uses the supported VITE_HOSTED_APP_CHANNEL=nightly setting on a separate server with project auto-bootstrap disabled. The zero-project capture has a connected, ready environment and the actual empty-project screen.

For Electron, each 6.8s recording shows focus by about 2.2s, Enter activation, and a visible draft by about 4.5s. Nightly Settings recordings show focus, Enter, and the resulting draft; exact tool timestamps are linked in the supplemental index.

InteractionBefore · 27e0c68After · 7e3da10
Electron focus and Enter to draftrecordingrecording
Nightly Settings focus and Enter to draftrecordingrecording

All supplemental before/after pairs and settling pairs have zero changed RGB pixels. Their indexes contain the accessible-name, href, destination, and readiness snapshots. Canonical browser manifest explicitly marks superseded uploads.

Models: Claude Opus 5.5 and GPT-6.1-Sol. Harnesses: Claude Code and Codex in T3 Code.

Checks

21 successful · 17 skipped
All checks passed
7e3da10

Added 1 commit

  • fix(web): name the sidebar logo link "T3 Code home"4bc10a4
Synced from GitHub

Approvability

Verdict: Approved at 4bc10a4

Macroscope's review found this PR approvable — This is a narrowly scoped accessibility bug fix that changes only the sidebar logo link’s announced name; its route and visible behavior remain unchanged. It introduces no new capability, schema, deployment, security, or static-analysis risk.

No code changes detected at 7e3da10. Prior analysis still applies.

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

Synced from GitHub

Review in Change Stack →

Important

Review skipped

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

External image Run configuration
External image Commits

Reviewing files that changed from the base of the PR and between 4bc10a4478a84f51f3610191940eab1ef2ecdfea and 7e3da10cb536358f9b756300c58c82f14663e151.

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
📥 Commits

Reviewing files that changed from the base of the PR and between 5bb54a0f77c6655fdb2ab551612ca1ca1fcd3667 and 4bc10a4478a84f51f3610191940eab1ef2ecdfea.

📒 Files selected for processing: 1
  • apps/web/src/components/sidebar/SidebarChrome.tsx

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

Walkthrough

The sidebar brand link’s accessible label changes from “Go to threads” to “T3 Code home.” Its destination remains /.

Changes: Sidebar brand link

Layer / File(s)Summary
Update accessible label
apps/web/src/components/sidebar/SidebarChrome.tsx
The brand link’s accessible label changes to “T3 Code home.” Its destination remains /.

Priority: External image Low

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested labels: bugfix, size:XS

Suggested reviewers: juliusmarminge

Merge Risk: External image Minimal · up to 4bc10

The updated label improves identification for screen-reader and voice-control users without changing navigation behavior.

Pre-merge checks: Passed 4
Check nameStatusExplanation
Linked Issues checkPassed[#24203] The issue requires the sidebar logo link's accessible name to describe its destination and to include the visible text "T3 Code". The diff changes the aria-label on the sidebar brand Link…
Out of Scope Changes checkPassedThe whole-PR diff against the merge base changes one file and one line: the aria-label value in SidebarBrand in apps/web/src/components/sidebar/SidebarChrome.tsx. This change implements the sing…
Title checkPassedThe title clearly and concisely describes the sidebar logo link accessible-name change.
Description checkPassedThe description covers the problem, change, issue and approval context, focused verification, evidence, limitations, and agent details. It satisfies the repository template.
Full details: Linked Issues check

Explanation

[#24203] The issue requires the sidebar logo link's accessible name to describe its destination and to include the visible text "T3 Code". The diff changes the aria-label on the sidebar brand Link in apps/web/src/components/sidebar/SidebarChrome.tsx from "Go to threads" to "T3 Code home". This name meets both points. It matches the name the issue suggests. The link destination stays /, which the issue describes as the app home. The issue does not require automated tests. The issue names the Windows desktop app. The PR verified the name in Chromium on Linux. The component is shared web code, so the desktop app uses the same markup. The desktop app was not run directly, so this residual uncertainty is noted but does not affect the verdict.

Full details: Out of Scope Changes check

Explanation

The whole-PR diff against the merge base changes one file and one line: the aria-label value in SidebarBrand in apps/web/src/components/sidebar/SidebarChrome.tsx. This change implements the single objective in #24203. No unrelated code, tests, or documentation changed. The mobile "Go to threads list" control described in the PR is not part of the diff, which matches the PR description.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • 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.

Synced from GitHub

I see you just created the same pr as me a few minutes before mine went up. i have closed #24211 in favour of yours. I can confirm that the change works with NVDA since my pr made the same change. it now says "link T3 Code home"

Synced from GitHub

I like this better than "Go to threads", which was just wrong. But I think "T3 Code home" is still pretty ambiguous about what you should expect from clicking it. There's no home page: clicking it opens a new thread draft in your most recently updated project.

What about "T3 Code, new thread"? It still starts with the visible text, so voice control users can say "click T3 Code", and it tells you what clicking actually does. The one exception is someone with no projects yet, who gets the "add a project" screen instead.

Thoughts?

Synced from GitHub

This is Claude posting on behalf of @nibarAhmed.

What about "T3 Code, new thread"?

Thanks, fair point that there's no literal home page. I'd still lean toward "T3 Code home":

  • The sidebar already has a "New thread" button a few controls down, and it picks the project differently than the logo does (the logo always uses the most recently updated project, while the button follows the sidebar's project scope and has a Shift+click variant). Two "new thread" controls that behave differently would be more confusing in a screen reader's links/controls list.
  • "Home" describes where the link goes rather than what / currently does. Describing the current behavior is how "Go to threads" went stale after #1617.
  • It also stays accurate for the states where / doesn't open a draft: no projects yet, hosted with no environment connected, and the "Couldn't start a new thread" error.

Both labels start with the visible "T3 Code", so WCAG 2.5.3 is satisfied either way.

Added 1 commit

  • Merge origin/main into issue-watch/242037e3da10

[Opus 5.5][Claude Code] on behalf of shivam.

Handing this over. Here's what I found:

  • Reproduced on main in Chromium on Linux (corex), running the web dev server from this branch with the fix taken out. Chrome's accessibility tree named the sidebar logo link "Go to threads". Its visible text is "T3 Code", and / opened a new draft in the most recent project.
  • With the fix, the same tree reads link "T3 Code home" (children: image "T3", StaticText "Code"). The before/after screenshots in the PR body show both names.
  • Not tested: the Electron desktop app (my sandbox had no display) and a real screen reader or voice-control tool. The desktop app renders the same web component.
  • Checks: vp run check:changed passed locally. CI and Macroscope were green on 4bc10a4. A Codex review found no code issues. The only other reference to the old wording is the mobile "Go to threads list" button, which really does open the thread list, so I left it alone.

On akj's naming point: I kept the issue's suggested "T3 Code home" because it starts with the visible text, which is what WCAG 2.5.3 cares about. "T3 Code, new thread" would describe the click result more literally. Either name fixes the bug.