Skip to content

fix(web): timeline system dividers show pointer and hover feedback - #16103

Closed
nvtoan0201-swe wants to merge 1 commit into
pingdotgg:mainfrom
nvtoan0201-swe:fix/timeline-divider-pointer-hover
Closed

nvtoan0201-swe wants to merge 1 commit into
pingdotgg:mainfrom
nvtoan0201-swe:fix/timeline-divider-pointer-hover

Conversation

@nvtoan0201-swe

Copy link
Copy Markdown

Problem

The action pill rendered by TimelineSystemDivider — the "Subagent of" row at the top of a subagent thread and the "Forked from conversation" / "Conversation fork" dividers — is a real button, but it reads as inert:

  • it is a raw <button> with no cursor-pointer, and the Tailwind v4 preflight leaves the default arrow;
  • its hover:bg-muted fill is nearly identical to the resting bg-background, so the fill step is imperceptible and the tooltip is the only feedback.

Fixes #15159.

Change

One class string in apps/web/src/components/chat/TimelineSystemDivider.tsx:

  • cursor-pointer;
  • hover:bg-accent hover:text-foreground, following the existing ghost-muted button variant. I measured the hover:bg-accent/20 pattern from the in-timeline subagent row first: composited on this pill's bg-background it moves light mode from oklch(0.992) resting to oklch(0.987), which is not a visible step, so the stronger token pair is what actually resolves the report;
  • focus-visible:ring-2 ring-inset ring-ring/70 — the button had no focus ring; same pattern as the in-timeline subagent row (V2LifecycleRow).

Scope and approval

Focused fix for the triaged bug #15159 (good first issue). No behavior, data, contract, or provider changes; the pill's click target, labels, and layout are unchanged, and there is no unrelated cleanup. Evidence images are hosted in a release on my fork, not committed here.

Verification

  • vp lint apps/web/src/components/chat/TimelineSystemDivider.tsx — passed
  • vp fmt --check apps/web/src/components/chat/TimelineSystemDivider.tsx — passed
  • vp run --filter @t3tools/web typecheck — passed
  • Ran the local dev server against an isolated .t3 state seeded with a parent thread and a subagent child (lineage.parentThreadId), opened the child in Chrome via playwright-core in light and dark themes, hovered the pill, and read computed styles:
before after
cursor default pointer
light hover fill oklch(0.985) vs resting oklch(0.992) oklch(0.967) plus text-foreground
dark hover fill oklab(1 0 0 / 0.03) overlay, muted text oklab(1 0 0 / 0.04) overlay, text-foreground
:focus-visible ring none inset 0 0 0 2px oklab(0.488 -0.023 -0.216 / 0.7)

Unrelated provider update banners are hidden in the captures so they do not cover the pill. Desktop shares this web component; mobile is native and unaffected.

Theme Before hover After hover After focus-visible
Light before hover, light after hover, light after focus-visible, light
Dark before hover, dark after hover, dark —

Agent: deepseek-v4.1-flash, opencode harness.

The action pill in TimelineSystemDivider (the "Subagent of" row and the
fork dividers) rendered as a raw button with the default arrow cursor
and a hover fill that is nearly identical to its resting background,
so it read as inert.

Add cursor-pointer, a visible hover fill and text color following the
ghost-muted button pattern, and a focus-visible ring matching the
in-timeline subagent row.
@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 5, 2026
@coderabbitai

coderabbitai Bot commented Oct 5, 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: Advanced
  • Run ID: e9931d75-7515-46c0-8649-405a0b068f5a
📥 Commits

Reviewing files that changed from the base of the PR and between 68802a4 and 99d2fd3.

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

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

The timeline divider action button now uses a pointer cursor, accent and foreground hover colors, and visible focus-ring styling.

Changes

Timeline divider button

Layer / File(s) Summary
Action button styling
apps/web/src/components/chat/TimelineSystemDivider.tsx
The action button now uses a pointer cursor, accent and foreground hover colors, and visible focus-ring styling.

Priority: ⬇️ Low

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

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to 99d2f

The action retains its existing click behavior while adding cursor, hover, and keyboard-focus feedback. No actionable merge-blocking risk remains.

🚥 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 1 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 summarizes the main change: improved pointer and hover feedback for timeline system dividers.
Description check ✅ Passed The description covers the required Problem, Change, Scope and approval, and Verification sections. It explains the issue and fix, links the scope to issue #15159, and reports focused checks and UI ev…
Linked Issues check ✅ Passed Open issue [#15159] requires a pointer cursor and clearly visible hover feedback for the clickable subagent parent-thread pill. TimelineSystemDivider.tsx adds cursor-pointer and `hover:bg-accent h…
Out of Scope Changes check ✅ Passed The pull request changes only the action button class in TimelineSystemDivider.tsx. The cursor and hover styles directly address [#15159]. The focus ring adds related keyboard feedback. Applying the…
  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@juliusmarminge

Copy link
Copy Markdown
Member

Note

Grok responding on behalf of Julius.

Thanks for working on this, @nvtoan0201-swe. #15188 just landed on main (e08c31e) and fixes #15159 the same way: the timeline divider pill now has a pointer cursor, a visible hover state, and a focus ring. Since this PR only targeted that issue, I'm closing it as superseded.

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]: Subagent parent link lacks pointer cursor and visible hover feedback on Windows

2 participants