farouqaldori/vibe-notch
45.9
Weak · 1 October 2026
12.5k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Vibe Notch is a macOS application that provides a persistent 'notch' interface for monitoring and interacting with Claude Code sessions. It tracks real-time chat history, token usage, and subagent activity while offering granular control over multi-monitor display placement and notification sounds. The system integrates with terminal environments to detect focus states and manages secure communication via Unix sockets.
Behavioural changes
App renamed to Vibe Notch and version bumped to 1.3.2
The application's display name has been changed from "Claude Island" to "Vibe Notch" in the project configuration. Additionally, the marketing version has been updated to 1.3.2 and the internal build number (CURRENT\_PROJECT\_VERSION) has been incremented to 6, reflecting the release of this new version.
ClaudeIsland.xcodeproj · high confidence
App renamed to Vibe Notch with improved build reliability and Cloudflare deployment
The application has been renamed from Claude Island to Vibe Notch, updating all build artifacts, DMG volumes, and release metadata accordingly. The build process is now more robust: it correctly captures exit codes when piping through xcpretty to prevent false failures, and automatically re-runs commands with full output on error. Website deployment has switched from git push to Cloudflare Pages via wrangler, and the release script now safely updates the website config file in-place. Additionally, private key permissions are now strictly restricted (600/700) for improved security.
scripts · high confidence
App renamed to Vibe Notch with new update feed and chat enhancements
The application has been renamed from Claude Island to Vibe Notch, updating the bundle display name and pointing the Sparkle auto-updater to the new https://vibenotch.app/appcast.xml. In the chat view, inline images are now rendered with a dedicated view that decodes base64 data off the main thread to prevent scrolling hitches, and assistant message dots are hidden when the text content is empty to avoid orphan indicators. The session list now displays token usage counts and shows a phase-based status (e.g., Processing, Ready) as a fallback when no other activity is present. The settings menu has been reorganized into a scrollable layout with new screen selection and sound picker rows, and the notch interface now features a pixel-art checkmark indicator for 'ready for input' states along with a bounce animation.
ClaudeIsland/UI/Views · high confidence
Enhanced settings panel with multi-monitor support and configurable notifications
The settings interface now supports selecting a specific display for the island on multi-monitor setups, allows users to choose a custom notification sound for when Claude is ready, and provides a native folder picker to configure the Claude config directory location. The settings panel dynamically expands to accommodate these new inline pickers, and the notch layout logic has been updated to correctly handle devices with and without a physical notch.
ClaudeIsland/Core · high confidence
Improved screen handling and analytics tracking
The app now debounces screen change notifications to prevent redundant window recreations and window leaks when displays reconnect or wake from sleep. It also tracks the installed Claude Code version by scanning project directories and sends it to analytics, while ensuring a consistent user identity across sessions using the Mac's platform UUID.
ClaudeIsland/App · high confidence
Improved session status tracking for tool failures, subagents, and compaction
The application now provides more granular feedback during complex operations. Tool errors and permission denials are now explicitly tracked in the session state, allowing the UI to surface specific error messages or denial reasons rather than failing silently. Additionally, the status handling for subagent tasks has been refined: the session now correctly remains in a 'processing' state when a subagent starts or stops, preventing premature transitions to 'waiting'. New events for API-level stop failures (e.g., rate limits) and post-compaction completion are also handled, ensuring the UI accurately reflects when the system is busy versus when it is ready for user input.
ClaudeIsland/Resources · high confidence
Improved tool display names and session focus detection
The 'AgentOutputTool' is now displayed as 'Await Agent' for a friendlier user experience. Additionally, the system can now detect if a Claude session is currently focused by checking if the terminal is the frontmost application and, for tmux sessions, if the specific pane is active; this enables features like playing notification sounds only when the session is not in focus.
ClaudeIsland/Utilities · high confidence
Improved update status feedback and session-aware notification
The update service now explicitly distinguishes between 'idle' and 'up to date' states, showing a temporary 'up to date' confirmation for five seconds before returning to idle, and prevents dismissal during this window. It also introduces a session-aware notification system: when an update is found, a 'hasUnseenUpdate' flag is set (unless already seen in the current session), allowing the UI to display a subtle indicator; this indicator can be cleared via a new 'markUpdateSeen' method. Additionally, the update check now safely handles cases where the updater is not initialized by setting an error state instead of crashing.
ClaudeIsland/Services/Update · high confidence
Improved window focus behavior and launch animation control
The notch window no longer steals focus when opened via a notification, ensuring the user's current app remains active. Additionally, the window controller now supports skipping the boot animation on subsequent launches or screen changes, and the panel is released automatically when closed to prevent memory leaks.
ClaudeIsland/UI/Window · high confidence
Inline expandable pickers for config directory, screen, and sound settings
The settings interface now uses inline expandable rows for the Claude config directory, screen selection, and notification sound. Clicking a row expands it to reveal options without opening a separate modal or panel. For the config directory, users can choose 'Auto-detect' (resolving via CLAUDE\_CONFIG\_DIR, \~/.config/claude/, or \~/.claude/) or 'Choose folder…' which opens a native folder picker; selecting a custom folder triggers a hook installer update. Screen selection allows choosing 'Automatic' or a specific display, triggering a window recreation on change. Sound selection provides a scrollable list of system notification sounds with preview playback. All three components share a consistent UI style with hover states and chevron indicators.
ClaudeIsland/UI/Components · high confidence
Live subagent tool updates and expanded container support
Subagent tool calls now appear in the chat history in real-time as they execute, rather than waiting for the parent agent to complete, providing immediate visibility into nested work. The system also recognizes 'Agent' as a valid subagent container alongside 'Task', ensuring consistent tracking and UI updates for both types of nested operations.
ClaudeIsland/Services/State · high confidence
Refined notification sound logic and expanded terminal app support
The application now plays notification sounds only when the Claude session is not the focused terminal window, preventing interruptions during active use. This behavior is enabled by new logic in the Tmux service that detects whether the current tmux pane is active. Additionally, support for the Alacritty terminal emulator has been expanded to include the 'org.alacritty' bundle identifier, and the process tree builder now includes a helper to identify the terminal application PID.
ClaudeIsland/Services/Shared, ClaudeIsland/Services/Tmux · high confidence
Safer socket permissions and version-aware hook registration
The socket server now restricts the Unix socket file permissions to 0o600 (owner read/write only) instead of 0o777, improving security by preventing other users from accessing the communication channel. Additionally, the hook installer now detects the installed Claude Code version and only registers hook events that the specific version supports, while also cleaning up stale or invalid hook entries from previous installations to prevent configuration errors.
ClaudeIsland/Services/Hooks · high confidence
Support for inline image blocks and agent descriptions in chat history
The chat history manager now exposes agent descriptions for each session via a new \agentDescriptions\ property, allowing the UI to display context about active agents. Additionally, the chat history item type now supports \image\ blocks, enabling inline images to be rendered directly within the conversation view. The internal tracking of loaded sessions has been refined to distinguish between sessions discovered via hooks and those explicitly parsed from JSONL files, ensuring history is only marked as loaded after the full file content is processed.
ClaudeIsland/Services/Chat · high confidence
Support for inline images, idle session states, and improved subagent tracking
The chat model now supports inline image blocks, allowing users to view images attached to messages with stable identifiers to prevent unnecessary re-renders. Session handling has been updated to recognize 'idle\_prompt' notifications, setting the session to an idle state, and file update payloads now distinguish between incremental and full message sets. Subagent management has been enhanced by tracking agent descriptions and token usage, while tool result displays now accept 'Agent' as a valid tool name alongside 'Task'. Additionally, the formatting of tool inputs for Bash, Write, Edit, and Read operations has been refined to prioritize showing the command or file path for better clarity.
ClaudeIsland/Models · high confidence
Token usage tracking, incremental parsing, and session status monitoring
The session service now tracks token usage (input, output, and cache tokens) for each conversation, exposing this data in the parsed conversation info. It introduces an incremental parsing mechanism that efficiently retrieves only new messages since the last check, improving performance for live updates. Additionally, the session monitor now performs periodic status rechecks to keep session state current, and file path resolution for sessions and subagents has been unified to support both nested and legacy flat directory structures for better compatibility.
ClaudeIsland/Services/Session · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 46 → 46 (-0.1)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 85 → 83 (-2.0)
- Architecture 95 → 97 (+1.8)
- Maturity 58 → 58 (-0.2)
- Readiness 12 → 15 (+3.1)
- Security 95 → 95 (+0.0)
Resolved (2)
- Documentation: no architecture or design documentation (README.md)
- Hotspot: ClaudeIsland/Models/ToolResultData.swift (ClaudeIsland/Models/ToolResultData.swift)
New (44)
- ChatView.body (cognitive 36) (ClaudeIsland/UI/Views/ChatView.swift)
- ChatView.body (cyclomatic 25) (ClaudeIsland/UI/Views/ChatView.swift)
- Duplicated block (10–11 lines × 2) (ClaudeIsland/Resources/claude-island-state.py)
- Duplicated block (11 lines × 2) (ClaudeIsland/UI/Views/NotchMenuView.swift)
- Duplicated block (11 lines × 4) (ClaudeIsland/UI/Components/ClaudeDirPickerRow.swift)
- Duplicated block (11 lines × 4) (ClaudeIsland/UI/Components/ClaudeDirPickerRow.swift)
- Duplicated block (11 lines × 4) (ClaudeIsland/UI/Components/StatusIcons.swift)
- Duplicated block (11–12 lines × 4) (ClaudeIsland/UI/Components/StatusIcons.swift)
- Duplicated block (12 lines × 2) (ClaudeIsland/UI/Views/ClaudeInstancesView.swift)
- Duplicated block (12 lines × 3) (ClaudeIsland/UI/Components/ClaudeDirPickerRow.swift)
- Duplicated block (13 lines × 2) (ClaudeIsland/UI/Views/NotchMenuView.swift)
- Duplicated block (15 lines × 2) (ClaudeIsland/UI/Components/ScreenPickerRow.swift)
- Duplicated block (15 lines × 2) (ClaudeIsland/UI/Views/NotchHeaderView.swift)
- Duplicated block (16 lines × 3) (ClaudeIsland/UI/Components/ClaudeDirPickerRow.swift)
- Duplicated block (18 lines × 3) (ClaudeIsland/UI/Components/ClaudeDirPickerRow.swift)
- Duplicated block (1–6 lines × 5) (ClaudeIsland/UI/Views/NotchHeaderView.swift)
- Duplicated block (21 lines × 2) (ClaudeIsland/UI/Components/StatusIcons.swift)
- Duplicated block (22 lines × 2) (ClaudeIsland/UI/Views/NotchMenuView.swift)
- Duplicated block (28–29 lines × 2) (ClaudeIsland/UI/Views/ChatView.swift)
- Duplicated block (6 lines × 4) (ClaudeIsland/UI/Views/ToolResultViews.swift)
- …and 24 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
farouqaldori/vibe-notch was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 10f1d240e2b4965c2e3c82a3a916458d0541b2be — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.