Skip to content

fix(macos): startup crash, window controls, and full playlist loading#5

Open
taylorhayis wants to merge 2 commits into
skyline69:mainfrom
taylorhayis:main
Open

fix(macos): startup crash, window controls, and full playlist loading#5
taylorhayis wants to merge 2 commits into
skyline69:mainfrom
taylorhayis:main

Conversation

@taylorhayis

@taylorhayis taylorhayis commented May 30, 2026

Copy link
Copy Markdown

Summary

  • Fix startup segfault on macOS 15 by avoiding cpal::Device::supported_output_configs() in spotix-core and librespot rodio; use default_output_config() instead (playback already resamples).
  • Restore native macOS window chrome (traffic-light close/minimize/maximize buttons) and add File → Close Window (Cmd+W). Linux/Windows keep borderless windows.
  • Load all user playlists from the Spotify Web API instead of only the first page (previously capped at 50).
  • Add scripts/rebundle-macos-dev.sh and just bundle-dev to rebuild a local Spotix-Dev.app after source changes.

Problem

On macOS 15.7 (Apple Silicon), launching from source crashed immediately after audio init with a segfault in CoreAudio inside supported_output_configs(), called from both spotix-core cpal output and librespot rodio.

All windows used .show_titlebar(false), so macOS had no close/minimize/maximize buttons and no File → Close menu item.

get_playlists() only fetched one Spotify API page (limit=50, offset=0), so users with large libraries never saw their full playlist list in the sidebar.

Changes

  • spotix-core/src/audio/output/cpal.rs — macOS workaround for CoreAudio crash
  • librespot-playback-patch/src/audio_backend/rodio.rs — same workaround for librespot audio backend
  • spotix-gui/src/ui/mod.rs, menu.rs, playlist.rs — native title bar on macOS
  • spotix-gui/src/webapi/client.rs — paginate playlist list API calls
  • scripts/rebundle-macos-dev.sh, justfile — local macOS dev bundle helper

Test plan

  • cargo build -p spotix-gui --bin spotix on macOS
  • App launches without segfault on macOS 15.7
  • Main window and Settings show traffic-light buttons; Cmd+W closes windows
  • Playlist sidebar loads more than 50 playlists for accounts with large libraries
  • just bundle-dev / bash scripts/rebundle-macos-dev.sh installs updated Spotix-Dev.app
  • Linux/Windows: borderless window behavior unchanged

Taylor Hay and others added 2 commits May 30, 2026 19:28
CoreAudio can SIGSEGV when enumerating output configs on macOS 15; use
default_output_config in spotix-core and librespot rodio instead.

Windows were borderless with no traffic-light buttons on macOS; enable
the native title bar and add File > Close Window (Cmd+W).

Co-authored-by: Cursor <cursoragent@cursor.com>
get_playlists() only fetched one Spotify API page, so users with large
libraries saw at most 50 playlists in the sidebar. Walk pages until
offset >= total and cache each page separately.

Add scripts/rebundle-macos-dev.sh and `just bundle-dev` to rebuild
Spotix-Dev.app after local changes on macOS.

Co-authored-by: Cursor <cursoragent@cursor.com>
@taylorhayis taylorhayis changed the title fix(macos): prevent startup crash and restore window close controls fix(macos): startup crash, window controls, and full playlist loading May 30, 2026
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