Skip to content
CAI
Software that uses CAICheck a score

kmikiy/SpotMenu

45.3

Weak · 30 September 2026

3.8k

lines of production code

Swift

with TypeScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

SpotMenu is a macOS menu-bar utility that provides playback control and track management for Spotify and Apple Music. It allows users to customize the status item's display, manage keyboard shortcuts, and handle authentication for features like liking tracks. The system also includes a marketing website built with Astro and React to distribute the application.

Features

Add Apple Music support and Spotify liking with long-form content handling

The SpotMenu/Playback module now supports playback control for both Spotify and Apple Music, allowing users to select a preferred player or let the app automatically detect which is running. For Spotify, users can now like and unlike tracks via the Web API, with a guided login flow to configure a developer Client ID. The playback view also displays metadata for long-form content such as audiobooks and podcast episodes, and the UI includes a custom slider and hover-based controls.

SpotMenu/Playback · high confidence

Initial project structure and build configuration for SpotMenu

The SpotMenu application project is established with its initial Xcode workspace, scheme, and build settings. This configuration defines the main application target alongside unit and UI test bundles, and integrates the Sparkle framework for automatic updates and the KeyboardShortcuts library for hotkey management.

SpotMenu.xcodeproj · high confidence

Initial release of SpotMenu with sandboxing and Sparkle auto-updates

This entry introduces the SpotMenu application, a menu-bar utility for controlling Spotify and Apple Music. The app is configured as a background-only agent (LSUIElement) and includes an Apple Events usage description to explain its need for automation permissions. It supports the com.github.kmikiy.spotmenu URL scheme for external triggering. To function within a sandboxed environment, the app declares entitlements for temporary Apple Events access to Spotify and Apple Music, along with standard sandbox permissions for file and network access. Additionally, Sparkle is integrated for automatic updates, utilizing a public ED key and a specific feed URL, with the installer XPC service enabled for secure, sandboxed installations.

SpotMenu · high confidence

Behavioural changes

Preferences window restructured with new customization and integration options

The Preferences window has been reorganized into distinct sections (Player, Appearance, Menu Bar, Shortcuts, About) to provide finer control over the app. Users can now select a preferred music player (Spotify or Apple Music) and configure Spotify-specific settings, including enabling track liking, entering a Spotify Client ID, and testing the connection. The Menu Bar section allows toggling the display of artist/title text, playing/liked/app icons, and adjusting layout properties like max width and font weights for both normal and compact views. Additionally, users can customize the playback window's appearance (colors, blur, hover effects) and assign custom keyboard shortcuts for playback controls and track liking.

SpotMenu/Preferences · high confidence

Redesigned menu bar item with granular display controls

The menu bar status item has been rebuilt to support a new set of display options, allowing users to toggle the visibility of the app icon, the heart (liked) icon, the music note icon, and the artist/title text. The view now supports a compact mode that stacks the artist and title vertically, and includes logic to hide the artist or title when playback is paused. Text content is automatically truncated to fit the configured maximum width, ensuring the menu bar item remains within bounds.

SpotMenu/StatusItem · high confidence

Redesigned menu bar status item and popover interface

The application now uses a custom SwiftUI-based status item view instead of a standard icon, allowing for dynamic content in the menu bar. A new popover system has been introduced to display a floating panel with fade-in/fade-out animations when toggled, replacing the previous presentation method. The menu structure itself has been simplified to include only Refresh, Preferences, and Quit actions, while the underlying UI components now support configurable width and integration with playback and preference models.

SpotMenu/UI · high confidence

SpotMenu 2.0 beta: complete menu bar app with customizable interface and keyboard shortcuts

The SpotMenu application has been rewritten as a native macOS menu bar app (SpotMenu 2.0 beta), replacing the previous implementation. This version introduces a fully customizable interface where users can toggle the display of the 'like' symbol, select a preferred music player, and configure menu bar settings. It supports global keyboard shortcuts for play/pause, track skipping, and liking/unliking tracks, with immediate UI feedback. The app now includes automatic update checking via Sparkle and handles Spotify authentication redirects to manage playback state.

SpotMenu/App · high confidence

SpotMenu website rebuilt with Astro, React, and Tailwind CSS

The SpotMenu marketing site has been completely rebuilt using the Astro framework with React integrations and Tailwind CSS styling. This update introduces a modern landing page featuring a dark/light theme toggle, a responsive header and footer, and a showcase of the app's SwiftUI-based features and demo videos. The site now includes a direct download button for the macOS application and a PayPal donation link to support the project, replacing the previous static implementation.

website · high confidence

Test coverage

Added initial UI test scaffolding for SpotMenu; Added initial test suite for SpotMenu.

Dependencies

Website dependencies updated to React 19 and Astro 5

The SpotMenu website now uses React 19 and Astro 5, along with updated versions of Tailwind CSS, Radix UI, and MDX support. This upgrade aligns the site with the latest stable releases of these frameworks, ensuring compatibility with modern React patterns and improved build performance.

(dependencies) · 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 52 → 45 (-6.5)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 98 → 92 (-5.3)
  • Architecture 91 → 94 (+3.0)
  • Maturity 53 → 53 (-0.0)
  • Readiness 32 → 25 (-6.3)
  • Security 74 → 79 (+5.3)
  • Accessibility 57 (new)

Resolved (3)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)

New (9)

  • Duplicated block (19 lines × 2) (SpotMenu/Playback/SpotifyLoginView.swift)
  • MethodTooLong: AboutPreferencesView.body (SpotMenu/Preferences/AboutPreferencesView.swift)
  • MethodTooLong: MenuBarPreferencesView.body (SpotMenu/Preferences/MenuBarPreferencesView.swift)
  • MethodTooLong: PlaybackView.controlsOverlay (SpotMenu/Playback/PlaybackView.swift)
  • MethodTooLong: SpotifyLoginView.stepClientIDEntry (SpotMenu/Playback/SpotifyLoginView.swift)
  • MusicPlayerPreferencesView.body (cognitive 21) (SpotMenu/Preferences/MusicPlayerPreferencesView.swift)
  • Outdated: keyboardshortcuts
  • Outdated: sparkle
  • SpotifyLoginView.stepClientIDEntry (cognitive 25) (SpotMenu/Playback/SpotifyLoginView.swift)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

kmikiy/SpotMenu 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 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a114819310db63ba1a8b3f88b7c223eec8cf1873 — 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-cb25ca4feafa.