Skip to content

Move Claude Island from notch overlay to draggable menubar pill#55

Open
drorlazar wants to merge 1 commit into
farouqaldori:mainfrom
drorlazar:feature/menubar-pill-positioning
Open

Move Claude Island from notch overlay to draggable menubar pill#55
drorlazar wants to merge 1 commit into
farouqaldori:mainfrom
drorlazar:feature/menubar-pill-positioning

Conversation

@drorlazar

Copy link
Copy Markdown

Summary

  • Converts the app from a full-width notch overlay to a compact, draggable pill that floats in the menubar area near system icons
  • Pill is always visible with crab icon (even when Claude is idle) and can be clicked to open the panel
  • Users can drag the pill horizontally to position it wherever they want — position persists across launches via UserDefaults
  • Hover-based mouse event toggling ensures clicks pass through to menubar items underneath when not directly on the pill

Motivation

On setups where the notch area is occupied by other apps (zNotch, Notchi) or on external monitors without a notch, the original overlay was unusable. This change makes Claude Island work as a standard menubar-area widget that doesn't interfere with other status items.

Changes

  • NotchWindowController: Window is now 620pt wide, positioned near the right side of the screen (or restored from saved position)
  • NotchViewModel: Hover-based ignoresMouseEvents toggling, removed hover-to-open in favor of click-to-open, anchor-based geometry
  • NotchGeometry: Added anchorX for flexible positioning with screen-edge clamping
  • NotchView: Always-visible crab icon, drag gesture for repositioning, simplified visibility logic
  • NotchViewController: Hit-test rects use anchor-based positioning
  • AppDelegate: NSStatusItem added as fallback for machines with menubar space

Test plan

  • Verify pill is visible near system icons in the menubar
  • Click the pill to open/close the panel
  • Drag the pill left/right to reposition — quit and relaunch to confirm position persists
  • Click other menubar icons near the pill — they should work normally
  • Verify processing/permission indicators still animate on the pill
  • Test on MacBook with notch and on external monitors

🤖 Generated with Claude Code

Convert the app from a full-width notch overlay to a compact, draggable
pill that floats in the menubar area near system icons. This makes the
app usable on setups where the notch area is occupied by other apps
(zNotch, Notchi) and on external monitors without a notch.

Key changes:
- Window is now 620pt wide, positioned near the right side of the screen
  instead of spanning full width
- Pill is always visible with crab icon (even when Claude is idle)
- Hover-based mouse event toggling: clicks/drags only work when cursor
  is directly over the pill, passing through to menubar items otherwise
- Drag gesture to reposition the pill horizontally, position persists
  via UserDefaults across launches
- NSStatusItem added as fallback (works on machines with fewer menubar
  items), with anchor position syncing
- Removed hover-to-open and boot animation in favor of click-to-open
- Geometry system uses anchorX for flexible positioning with screen-edge
  clamping

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
rosuH pushed a commit to rosuH/claude-island that referenced this pull request Apr 14, 2026
…i#55)

Add `nonisolated` markers to AnyCodable's init and encode methods
to allow safe calling from the socket dispatch queue. Without these
markers, Swift 6's strict concurrency runtime would trigger
_dispatch_assert_queue_fail when decoding hook events.
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