Skip to content

fix(chat-checkpoint-marker): close hover-bridge gap so Rewind/Fork stay reachable#468

Merged
blove merged 1 commit into
mainfrom
claude/chat-checkpoint-hover-bridge
May 19, 2026
Merged

fix(chat-checkpoint-marker): close hover-bridge gap so Rewind/Fork stay reachable#468
blove merged 1 commit into
mainfrom
claude/chat-checkpoint-hover-bridge

Conversation

@blove
Copy link
Copy Markdown
Contributor

@blove blove commented May 19, 2026

Summary

The Rewind / Fork pill on checkpoint markers (visible on hover of the gutter dot) was unclickable: the pill would flicker out before the cursor reached it.

Root cause

The pill is positioned at `left: 18px` from the 10px-wide dot, with a pure-CSS `:hover` toggle. The 8px gap between dot's right edge and pill's left edge is dead space — neither element is hovered during traversal, so the pill hides immediately when the cursor leaves the dot.

Fix

Add a 10px-wide invisible `::before` pseudo-element on the pill that extends leftward to meet the dot. The cursor stays inside the pill's hover region for the whole traversal.

  • No JS, no behavioral change
  • Coarse-pointer (touch) path unaffected — that uses a tap-driven `data-open` toggle

Files

  • `libs/chat/src/lib/primitives/chat-checkpoint-marker/chat-checkpoint-marker.component.ts` — one CSS rule (8 lines)

Test plan

  • `npx nx run chat:build` / `chat:test` — green
  • CI

🤖 Generated with Claude Code

…chable

The Rewind / Fork pill is positioned absolutely at left:18px relative
to the dot, with a CSS-only `:hover` toggle:

    .chat-checkpoint-marker__dot:hover + .chat-checkpoint-marker__pill,
    .chat-checkpoint-marker__pill:hover { display: inline-flex }

The 10px-wide dot ends at 10px; the pill starts at 18px — an 8px
visual gap. When the user moves the cursor from the dot toward the
pill they traverse that gap, during which NEITHER element is hovered.
The CSS toggle fires immediately, hiding the pill before the cursor
ever reaches it. Result: Rewind / Fork are visible but unclickable.

Fix: add a 10px-wide invisible `::before` pseudo-element on the pill
that extends leftward to meet the dot's right edge. The cursor stays
inside the pill's hover region throughout the traversal, so the pill
stays open.

No JS, no behavioral change. Coarse-pointer (touch) path is
unaffected — that uses a tap-driven `data-open` toggle instead of
:hover.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
threadplane Ready Ready Preview, Comment May 19, 2026 5:18pm

Request Review

@blove blove merged commit 8240f7a into main May 19, 2026
18 checks passed
@blove blove deleted the claude/chat-checkpoint-hover-bridge branch May 19, 2026 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant