VIBE CODED AS FUCK. DO WHAT YOU WANT. I DON'T OWN IT YOU DON'T | Feature | Status | Notes | |---|---|---| | **Dual Deck Player** | ✅ | Play/Pause, Stop/Eject, Cue, ±15s scrub, Start/End jump, Queue system | | **4-Slot CART Machine** | ✅ | Toggle play/stop+reset, per-slot LCD display | | **Playlist Manager** | ✅ | Drag/drop, Add files/folder, Load to deck, Queue, Right-click menu | | **CART Playlist** | ✅ | Separate playlist panel, auto-fills next free cart slot | | **MIDI Controller** | ✅ | Numark DJ2Go - Play/Pause, Cue, Jog wheels, 4 Cart buttons | | **Audio Fingerprinting** | ⚠️ | AcoustID integrated, API working but database gaps | | **Play History** | ✅ | Scrollable session history, file tags + MusicBrainz metadata | | **Top Bar** | ✅ | 24hr clock, full date display | | **Colour Themes** | ✅ | 4 themes - Green, Amber, Blue, Red - cycle with ◈ button | | **Resizable Columns** | ✅ | QSplitter on all 3 columns | radiopanel/ ├── main.py # Entry point, layout, wiring ├── audio_engine.py # JACK client, deck states, recording ├── deck_widget.py # CDJ-style deck UI + transport controls ├── cart_widget.py # 4-slot CART machine ├── playlist_widget.py # Playlist + CART playlist panels ├── fingerprint_widget.py # AcoustID audio fingerprinting ├── midi_engine.py # Numark DJ2Go MIDI mapping ├── top_bar_widget.py # Clock, date, theme switcher ├── history_widget.py # Session play history └── requirements.txt # Dependencies