Forums / Release Patch Notes / Castium Release 1.2.1
Release Patch Notes ๐Ÿ“Œ Pinned zombie Admin• Sept 27, 2026 (edited Sept 27, 2026 22:13)

Castium Release 1.2.1

CASTIUM Release v1.2.1 Patch Notes

Release Date: September 27, 2026
Installer Package: CastiumSetup-v1.2.1.msi


What's New in v1.2.1

๐Ÿš€ High-Performance SQLite Library Engine

  • Ultra-Fast Local SQLite Database (~/.castium/library.db): Transitioned library persistence and querying to a dedicated SQLite engine (Microsoft.Data.Sqlite) optimized for broadcasting and massive audio libraries (100,000+ tracks).
  • Broadcast-Tuned SQLite PRAGMAs:
    • PRAGMA journal_mode = WAL;: Write-Ahead Logging enables non-blocking concurrent reads while background indexing writes occur.
    • PRAGMA synchronous = NORMAL;: Maximum write throughput for batch operations without risk of corruption in WAL mode.
    • PRAGMA cache_size = -64000;: 64 MB in-memory page cache for sub-millisecond table queries and search.
    • PRAGMA mmap_size = 268435456;: 256 MB memory-mapped I/O for direct virtual memory disk access.
    • PRAGMA temp_store = MEMORY;: In-memory temporary tables and sorting buffers.
  • High-Performance Schema & Indexes: Unique index on file_path with B-tree indexes on directory_path, artist, title, and format.

๐Ÿ“ Subfolder Explorer & Dual View Mode

  • "All Songs" vs. "Subfolder View" Switcher: Studio Library & Playlist Manager now provides a top segmented toggle between flat "All Songs" view and interactive "Subfolder View".
  • Interactive Directory Tree: Expanding the ๐Ÿ“ icon on any folder card renders an interactive subfolder hierarchy with live direct and cumulative track counters.
  • Subfolder Filtering & Breadcrumbs: Selecting a folder or subfolder immediately filters the track table to that directory, with an "Include Subfolders" recursive toggle.
  • 1-Click "+ Enqueue Folder": Instantly queues all tracks from any subfolder or album directly into the active broadcast channel.

โšก Non-Blocking Background Scanning & Differential Caching

  • Detached Background Thread Execution: Scanning is elevated to a singleton background service (ILibraryIndexService). DJs can close the library modal, control playback, talk on the microphone, adjust channel audio, and monitor live listeners while 100,000+ tracks index in the background.
  • O(1) Differential Cache Verification: Before reading files on disk, the scanner pre-fetches a lightweight in-memory timestamp/size lookup. Unchanged files are verified in \(\mathcal{O}(1)\) time with zero audio decoders or COM readers opened (re-indexing 20,000+ files completes in ~1โ€“2 seconds).
  • Dual Progress Monitoring:
    • Dashboard Header Pill: Compact Indexing: X / Y status pill with an instant cancel button โœ•.
    • Studio Library Banner: Real-time progress bar, track counter, and current filename.

๐Ÿ”„ Automatic Detection & Legacy Library Migration

  • Zero-Setup Startup Detection: On launch, if the SQLite library is fresh/empty, Castium automatically detects and imports legacy files in the background:
    • Saved Playlists (~/.castium/playlists): Existing .json and .m3u / .m3u8 playlists are parsed and bulk-inserted into SQLite in milliseconds without re-decoding audio.
    • Configured Music Folders (~/.castium/music_folders.json): Previously configured music folders are automatically detected and scheduled for background indexing.
    • iTunes / Apple Music Library: Automatically checks %USERPROFILE%\Music\iTunes\iTunes Music Library.xml and imports track metadata.
    • M3U / M3U8 Importer: Support for importing external .m3u and .m3u8 playlists with #EXTINF metadata tags.

๐ŸŽ›๏ธ Broadcast-Grade Local Player, Playlist Switcher & Request Management

  • Instant Playlist Switcher Dropdown: The Console Player card now houses a top-level playlist switcher that queries all .m3u, .m3u8, and .json playlists from ~/.castium/playlists on the fly. Switch entire station playlists or active queues with zero interruption.
  • Instant Song Request Switcher & Live Search:
    • Integrated "Requests & Song Switcher" tab with sub-second title/artist search across the active playlist.
    • 1-Click [ โญ Play Next ] (Queue Request): Instantly cues any listener request to play directly next in rotation (CurrentIndex + 1) and decorates it with a glowing amber [REQUEST] badge.
    • 1-Click [ โšก Fade Now ] (Take Request Live): Immediately initiates an equal-power crossfade transition directly into the requested track.
  • On-Air [ โšก FADE NEXT ] Auto-Transition:
    • Added a dedicated broadcast radio auto-fade button to the transport. Seamlessly triggers a constant-power sin/cos crossfade curve into the next song without waiting for the track to run out or abruptly cutting audio.
  • Broadcast Countdown Clocks:
    • Dual time displays show elapsed playback time alongside a broadcast countdown (-MM:SS), allowing DJs to time voice-overs and intros with precision.
  • Song Fading & Crossfade Engine:
    • Integrated drawer with live configuration for crossfade duration (1.0sโ€“10.0s), fade-in duration (0.5sโ€“5.0s), and fade-out duration (0.5sโ€“5.0s).

๐Ÿ–ฅ๏ธ Dynamic Multi-Column Console & Ultra Widescreen Display Support

  • Expandable Console Columns (2 to N Columns): Broadcasters on ultra widescreen monitors (21:9, 32:9, multi-monitor setups) can now add as many dashboard columns as desired, or scale down to 2 columns for compact displays.
  • Dynamic Column Stepper & Header Controls:
    • Quick column stepper (โˆ’ Remove Column, active count indicator, + Add Column) in the Console Columns settings panel.
    • Direct โœ• remove column button on each column header.
    • Card Safety & Migration: Removing a column automatically migrates any hosted cards into the adjacent surviving column so no cards are ever lost.
    • Hard lower boundary of 2 columns enforced.
  • Instant Ultrawide Presets:
    • 2 Dual: Streamlined 2-column layout for standard laptops or vertical monitors.
    • 3 Studio (2-1-1) / 3 Equal (1-1-1): Classic broadcast layout configurations.
    • 4 Ultrawide: Tailored for 21:9 ultrawide screens (e.g., 3440ร—1440).
    • 5 Panoramic: Enhanced panoramic layout for wide multi-monitor or 3840ร—1600 setups.
    • 6 Super Ultrawide: Full spanning layout for 32:9 super ultrawides (e.g., 5120ร—1440).
  • Fluid Grid Sizing & Drag-and-Drop Synchronization:
    • CSS Grid dynamically adjusts to repeat(N, minmax(280px, 1fr)) with max-width: 100% when column count \(\ge 4\), unlocking full panoramic canvas real estate without clipping.
    • SortableJS is dynamically synchronized across all active column containers (col-0 through col-(N-1)), enabling smooth drag-and-drop card reorganization across any number of columns.
  • Custom Column Naming & Labels: Broadcasters can customize and rename any column (e.g., "Main Decks", "Mic & Audio Ingest", "Audience Chat & Requests", "Master Out") by clicking directly on the column header title or โœŽ pencil icon inline, or typing in the Custom Column Names inputs in the console column settings drawer. Custom column names are automatically saved and restored in CastiumProfile.ColumnNames.
  • Profile Persistence: Dynamic column configurations, custom column titles, and multi-column card allocations are serialized directly to ~/.castium/profile.json (MultiColumnCards, ColumnCount, and ColumnNames) with complete backward compatibility for existing 3-column profiles.

๐Ÿงช Automated Testing & Reliability

  • Added comprehensive test coverage in LibraryDatabaseServiceTests.cs and AudioDuckingMixerTests.cs.
  • All 188 automated unit tests passing with 0 errors and 0 warnings.

Replies (0)

Leave a Reply

Sign in with Google or Discord