How kushalpandya/petrichor works
Petrichor is an offline macOS music player. Its main workflow is to add music folders, extract track metadata into a persistent library, browse or organize that library, then queue and play tracks. Separate product areas cover playlists, internet radio, lyrics, artist information, and macOS automation and playback controls. The graph reflects the documented capabilities and sampled manager/backend responsibilities; some subsystem links are omitted because their call sites were not included in the excerpts.
Main entry points: PlaybackManager.swift Playback manager · LibraryManager.swift Library manager · PlaylistManager.swift Playlist manager · ContentView.swift Main interface
Components 28
App and Interface
- App lifecycle
Application/AppCoordinator.swift - Main interface
Views/Main/ContentView.swift - Library views
Views/Library/LibraryView.swift - Folder views
Views/Folders/FoldersView.swift - Playlist views
Views/Playlists/PlaylistsView.swift - Radio views
Views/Radio/InternetRadioView.swift - Player controls
Views/Main/PlayerView.swift - Mini player
Views/MiniPlayer/MiniPlayerWindowManager.swift
Music Library
- Library manager
Managers/Library/LibraryManager.swift - Metadata engine
Core/Metadata/MetadataEngine.swift - Music entities
Models/Core/Track.swift - Library database
Managers/Database/DatabaseManager.swift - Folder hierarchy
Managers/FolderHierarchyBuilder.swift
Playback
- Playback manager
Managers/PlaybackManager.swift - Queue management
Managers/Playlist/PMQueue.swift - Playback engine
Core/Playback/PlaybackEngine.swift - Audio backend
Core/Playback/CrescendoPlaybackBackend.swift - macOS controls
Managers/RemoteCommandManager.swift
Music Features
- Playlist manager
Managers/Playlist/PlaylistManager.swift - Playlist operations
Managers/Playlist/PMRegularPlaylists.swift - Radio manager
Managers/InternetRadioManager.swift - Lyrics manager
Managers/LyricsManager.swift - Artist information
Managers/ArtistBioManager.swift - Automation commands
Managers/Automation/AutomationManager.swift
Other components
- Listener
- Radio directory
- Online music services
- Audio output
Connections 34
- Listener → Main interface: uses
- App lifecycle → Library manager: coordinates
- App lifecycle → Playback manager: coordinates
- App lifecycle → Playlist manager: coordinates
- Main interface → Library views: shows
- Main interface → Folder views: shows
- Main interface → Playlist views: shows
- Main interface → Radio views: shows
- Library views → Library manager: requests library
- Folder views → Library manager: requests folders
- Library manager → Metadata engine: extracts tags
- Library manager → Library database: reads and writes
- Metadata engine → Music entities: produces metadata
- Library manager → Folder hierarchy: builds hierarchy
- Playlist views → Playlist manager: manages playlists
- Playlist manager → Playlist operations: delegates operations
- Playlist manager → Library database: loads and saves
- Playlist manager → Playback manager: controls playback
- Radio views → Radio manager: manages stations
- Radio manager → Library database: loads and saves
- Radio manager → Radio directory: fetches directory
- Lyrics manager → Online music services: fetches lyrics
- Artist information → Online music services: fetches biographies
- Artist information → Library database: stores information
- Automation commands → Playback manager: queries and controls
- Automation commands → Playlist manager: manages playlists
- Automation commands → Library manager: queries library
- Player controls → Playback manager: controls playback
- Mini player → Playback manager: displays controls
- macOS controls → Playback manager: sends commands
- Playback manager → Playback engine: coordinates playback
- Playback manager → Queue management: manages queue
- Playback engine → Audio backend: forwards audio operations
- Audio backend → Audio output: renders audio