Callers Caddy — Changelog
Versioning: 0.XX = Prototype phase (XX = Prototype number).
From the official launch onwards, on 2.0 changed.
Versions 1.xx remain open for the old version.
0.31 — Beat Snap Audition (2026-03-16)
- Beat Snap Dialog: Preview the loop jump with waveform visualization
- Dual waveform display (loop-out at the top, loop-in at the bottom) with cursor synchronization
- Playback sample counter (
_playback_sample) in audio engine for precise position determination - Engine loop is deactivated during audition (prevents double jumps due to feed-ahead)
- Layout versioning:
_LAYOUT_VERSIONPrevents corrupted dock states during changes - Versioned
saveState()/restoreState()— old state is automatically discarded - Bugfix: Dock widgets could no longer be snapped to the dock after switching from P30 to P31.
0.30 — BPM detection, reports, lyrics contrast (2026-03-14)
- Auto-BPM detection via comb filter bank (scipy/numpy, no new packages)
- Sub-harmony correction: Check integer multiples, prefer higher tempi.
- BPM detection runs in QThread (non-blocking).
- Reports widget: Setlist/music sequence list for GEMA with TXT export
- Bidirectional ComboBox filtering (location ↔ date)
- Lyrics contrast: WCAG-based color recognition for Word HTML (bgcolor, background, color)
- Sanitizer removes block backgrounds, retains inline highlights, and replaces poor text colors.
- The default stylesheet is updated with every skin change and when setHtml() is called.
0.29 — Release preparation (2026-03-12)
- Internationalization: i18n module with JSON translations (German/English)
- 5-level folder structure: 1_Source, 2_Test, 3_Build, 4_Release, _archive
- Build pipeline: PyInstaller-Spec + build.py (full package, update, source ZIP)
- Clean DB script: Removes user data, retains reference data (sequences, teaching order)
- Migration EXE: Separate Access import process
- Portable paths: App directory next to EXE instead of prototype folder
0.28 — Sequence Window + Design Menu + Audio Fix (2026-03-11)
- New dockable window „Sequences“ (Dock 9, tabbed with Lyrics)
- Import of 885 singing call sequences from Access MDB (caller.mdb)
- Cached Live Mapping against Burleson Vocabulary (Teaching Order)
- Contains filter: Autocomplete search for contained calls
- Limit filter: Only sequences up to a certain program level.
- Lazy loading (blocks of 50) for fast scrolling
- Detailed dialog with all calls and program tags
- Remapping button (gear icon) for recalculating teaching orders
- Zoom [-/+] with percentage display (like lyrics widget)
- New module: sequence_mapper.py (Burleson mapping logic)
- Database extension: sequences + sequence_calls Tables with indexes
- Design menu: Load/save/restore layout + skin switching at runtime
- Named layouts: Callers can save "Live.ini", "Workshop.ini", etc.
- Playlist Manager renamed to "Planner" (shorter, renamed everywhere)
- Caller Workflow Guidance: Location → Planner button red → Planner confirmed → Playlist focus
- Audio fix: Persistent stream (no crackling/humming at song start)
- WSOLA warmup: 200ms settling phase is output as silence
0.27 — Performance optimization (2026-03-11)
- Performance measurement framework with Phase A (Baseline) and Phase B (Stress test with 10k songs)
- Test methodology: 10 repetitions, statistics (Mean/StdDev/Min/Max), CSV export
- Pool table in the playlist manager: 40% faster through optimized table pattern
- Song list: 7% faster through the same optimization
- Insight: QTableWidget rebuild is the bottleneck, not the database or sorting.
- Optimized pattern:
setRowCount(0)+setRowCount(n)+setItem()instead ofinsertRow()
0.26 — Lyrics display (2026-03)
- Lyrics widget as a dockable window (tabbed with song data)
- Supported formats: HTML/HTM, RTF, TXT
- Auto-Fit: Font size is automatically adjusted when text fits on a page.
- Auto-scroll: Proportional to the song's progress
- Smart color cleanup: Backgrounds removed, section colors retained.
- Toolbar with auto-scroll/auto-size toggle and zoom +/-
- Light Blue Skin: Second color scheme (light surface, blue accents)
- Muted and indicator colors for better contrast in both skins
- Loop-save bug fix: Snapshot mechanism saves loop values before song changes
- Shared data folders (music/, lyrics/, playlists/) save disk space
0.21 — Playlist and Playlist Manager (2026-03)
- PlaylistWidget: Slim, tabbed next to the song list, load/save as .txt
- PlaylistManagerWidget: Two-panel view with song pool and playlist mirror
- Song transfer: Double-click, arrow buttons, drag & drop
- 4 sorting options: Alphabetical, Quality, Last played, Recommendation
- Filter: All / Pattern only / Singing only
- Auto-Advance: Next song at song end, stop or fade-out
- Fade-Out: Configurable linear volume ramp (default 3s)
- Recommendation system integrated (originally P25)
- Integrated playlist builder (originally P24)
0.20 — Playback history (2026-03)
- Three-layer architecture: play_history, song_location_stats, on-the-fly calculation
- „"Last played" column in the song list
- Location-based statistics (when and where each song was played)
- Renaming: "Club" becomes "Location" (generalized for Club + Special)
- INI setting for date format (German/American)
0.19 — Locations (2026-03)
- Club and special administration as selectable contexts
- Location selection influences song recommendations and history.
0.18 — Pattern/Singing Mode (2026-03)
- Songs can be marked as patterns, singing, or both.
- Type abbreviation (P/S/PS) in song list and pool display
- Filter by mode in the playlist manager
0.17 — Current pace (2026-03)
- Saved tempo per song for tonight
- Tempo is automatically restored when a song is loaded.
0.16 — Song list with search (2026-03)
- Song list as QTableWidget with real-time search filter
- Search by title, label, and filename
0.15 — Portable Paths (2026-03)
- Relative paths for songs and data
- The application can be moved to a USB stick or between computers.
0.14 — Auto-Save (2026-03)
- Automatic saving of all changes (song data, settings)
0.13 — Song Data Model (2026-03)
- SQLite database for songs, locations, history
- Song fields: Title, Filename, Label, Quality, Pattern/Singing, Tempo
0.07 — Dock Window System (2026-03)
- QDockWidget-based windowing system with free arrangement
- Move, dock, stack, and resize windows
- The layout is saved and restored upon restart.
- Resize rules per window type
- Integrated: P8 (Show/Hide), P9 (Move), P10 (Resize Rules), P11 (Docking), P12 (Layout Persistence)
0.06 — Loop with tempo adjustment (2026-03)
- Loop region remains stable during tempo changes
- Proprietary streaming WSOLA algorithm (no Rubber Band/SoundTouch)
0.05 — Loop In / Loop Out (2026-03)
- Markable loop region with start and end point
- Seamless loop during playback
0.04 — Tempo and pitch simultaneously (2026-03)
- Independent simultaneous tempo and pitch control
0.03 — Pitch control (2026-03)
- Change pitch continuously, independent of tempo.
0.02 — Speed control (2026-03)
- Continuously change playback speed
0.01 — MP3 playback (2026-03)
- Load and play MP3 files reliably
- Basic transport controls (Play, Pause, Stop)
- Position indicator and seek slider