Skip to content

Notch grab: fn+drag that owns the drag — multi-capture, typeable note, top-anchored - #108

Open
sameeeeeeep wants to merge 2 commits into
mainfrom
claude/landing-page-status-2ffe5e
Open

Notch grab: fn+drag that owns the drag — multi-capture, typeable note, top-anchored#108
sameeeeeeep wants to merge 2 commits into
mainfrom
claude/landing-page-status-2ffe5e

Conversation

@sameeeeeeep

Copy link
Copy Markdown
Owner

Reworks the notch feedback/screenshot grab (used by ⌥↓ feedback and the new /screen + /reference skills) so it's actually usable. All verified live on the real app across several rounds.

What's fixed

  • fn+drag no longer selects the app's text. Root cause: the region overlay was ignoresMouseEvents = true (click-through) with a passive timer just watching the mouse, so the drag fell through to the app. Now the overlay becomes opaque to the mouse the instant fn is held (armed on fn-hold, before the mouse-down), swallowing the whole drag; release fn → click-through again so normal clicking works. Kills the blank/garbage grabs over text areas.
  • Multiple grabs accumulate. StepFeedback gains a screenshots array (serialized as feedback.screenshots); the note panel shows a live count + a row of thumbnails instead of overwriting one.
  • The note field is typeable. The panel re-keys on show/rebuild, and the grab overlay is torn down the moment fn is released so it never sits over the field.
  • Top-anchored, no pill. The panel drops from the top edge (notch-top aligned to the menu-bar top), content top-padded to clear the menu bar/notch; the guide card/pill is hidden during capture so the note owns the top.

Not included

  • The /screen + /reference skills live at ~/.claude/skills/ (user-level, not repo code).
  • The rebuilt Switchboard.app binary (build artifact).
  • Still open: an intent-first direct-grab mode (skip the guide card entirely for /screen+/reference) — the clean end state that removes this whole class of positioning/key artifact at the source.

🤖 Generated with Claude Code

sameeeeeeep and others added 2 commits August 15, 2026 01:30
…e note, top-anchored

Rework the notch feedback/screenshot grab (used by ⌥↓ feedback and the /screen + /reference
skills) so it's actually usable:

- fn+drag no longer selects the underlying app's TEXT. The region overlay now becomes opaque
  to the mouse the instant fn is held (armed on fn-hold, before the mouse-down), so it swallows
  the whole drag instead of letting it fall through; released fn → click-through again. Fixes
  the blank/garbage grabs over text areas.
- Multiple grabs accumulate. StepFeedback gains a `screenshots` array (serialized as
  `feedback.screenshots`); the note panel shows a live count + a row of thumbnails instead of
  overwriting a single thumb.
- The note field is typeable + focused: the panel re-keys on show/rebuild, and the grab overlay
  is torn down the moment fn is released so it never sits over the field.
- The panel drops from the top edge (notch-top aligned to the menu-bar top), content top-padded
  to clear the menu bar/notch; the guide card/pill is hidden during capture so the note owns the
  top.

All verified live on the real app. Still open: an intent-first DIRECT grab mode (skip the guide
card entirely for /screen + /reference).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ip the card

A GuideMode.grab that bypasses the guide card entirely: begin() branches before the steps
guard into beginGrab(), which sets up one synthetic result and drops straight into the
feedback grab + note panel (model.visible=false, no card, no pill, no ⌥↓ to arm). The note
panel is the only surface; fn+drag captures, multiple accumulate, ↵ finishes and writes the
run. /screen and /reference now fire {mode:"grab"}.

Verified: a run came back id="grab", 7 screenshots accumulated, typed note, outcome completed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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