Junimo Jams - 5.3.0
What's new
🌿 Junimo Jams — v5.3.0 Changelog
Cross-Platform Parity, Universal Player Architecture & HUD Polish Update
🐧 Linux Container & MPRIS2 Host Isolation Fix
- Container / Flatpak / Steam Host Bridge: Resolved the MPRIS2 D-Bus isolation issue where Steam runtime containers or sandboxed environments could not reach host session media players. Added an automatic host bridge fallback executing
/run/host/usr/bin/dbus-sendwith hostLD_LIBRARY_PATHresolution. - Pear Desktop Music & Native Clients: Full first-class MPRIS2 integration for Pear Desktop Music, YouTube Music, Spotify, VLC, and all MPRIS2-compliant players under Linux.
🪟 Windows Native Architecture Overhaul
- Expanded Player Ecosystem: Added out-of-the-box detection for Pear Desktop Music, YouTube Music Desktop App, VLC, Deezer, Plexamp, Nuclear, Roon, and Dopamine.
- Zero-Lag Window Enumeration: Overhauled
EnumWindowstitle scanning to pre-filter candidate media windows by title before resolving process IDs, eliminating dozens of unnecessaryProcess.GetProcessByIdallocations every poll cycle. - Smart Window Suffix Trimming: Automatically strips player suffixes (such as
- VLC media player,- Pear Desktop,- foobar2000,- AIMP) and correctly separates artist and track titles across various hyphen and dash encodings (-,—,–).
🍎 macOS Performance & Universal Player Bridge
- Consolidated AppleScript Batching: Spotify and Apple Music queries now fetch playback state, artist, and track name within a single atomic AppleScript execution, eliminating up to 4 separate
osascriptprocess spawns per polling cycle and delivering a ~400% performance improvement. - System Events Window Title Fallback: Non-scriptable macOS players (such as Pear Desktop, Cider, TIDAL, VLC, Nuclear) are now monitored seamlessly via safe
System Eventswindow inspection. - Universal Media Key Dispatch: Play/Pause, Next Track, and Previous Track actions automatically dispatch system-level media key events for players lacking custom AppleScript dictionaries.
🎵 Universal YouTube Music & Electron Parser
- Multi-Client Title Parsing: Enhanced
YouTubeMusicParserwith support for Pear Desktop Music, LibreWolf, Waterfox, Chromium, and unbranded Electron wrappers. - Separator Fallback: When client window titles omit the literal
"YouTube Music"tag, track and artist names are intelligently split rather than falling back to an unparsed single string.
🎨 In-Game HUD & Visual Polish
- Always-On Music HUD: The in-game HUD overlay is no longer hidden when no music is playing; players can now view the HUD at all times during gameplay with a clean, themed "No Music Playing" or "Paused / Idle" display.
- Smart Map Suppression: In "Only In Menu" mode, the HUD intelligently hides when opening the Game Menu's Map tab or custom map/atlas/minimap overlays (e.g., World Map, Atlas, MiniMap).
- Theme Button Box Proportions: Enlarged media control button dimensions (54x44 px) to prevent Stardew's 9-slice wooden texture boxes from collapsing into thin lines on the default theme, and made the main HUD container dynamically expand to comfortably contain playback controls.
- Default Theme: Fresh installations default to the classic Stardew Valley
"default"wooden theme. - Live SMAPI Console Diagnostics: Real-time track detection and playback state transitions are cleanly logged to the SMAPI developer console.
🌿 Junimo Jams — v5.2.1 Changelog
Stability, Robustness & Bugfix Update
🛡️ Core Stability & Bug Fixes
- Input Suppression on Controls: Clicking HUD buttons (Play/Pause, Next, Prev) now explicitly suppresses in-game click events via SMAPI (
Helper.Input.Suppress), preventing unintended tool swinging, weapon attacks, or accidental bomb placement. - Windows OS Handle Leak Fix: Ensured all
Processinstances created during active player detection (GetProcessesByName) are safely disposed via try/finally guards, preventing native OS handle accumulation over long play sessions. - Freeze Prevention (Timeout Guards): Added 1000–1500ms execution timeout limits with process termination fallbacks to all external CLI bridges (
dbus-sendon Linux,osascripton macOS, and media key dispatchers), ensuring Stardew Valley never hangs if an external media service becomes unresponsive. - MPRIS2 D-Bus Tag Isolation: Fixed Linux D-Bus metadata parsing where empty array properties (such as empty
xesam:artist) could bleed into subsequent tags (likexesam:album). - BFS Flood-Fill Memory Optimization: Optimized the theme background transparency algorithm by marking visited nodes at enqueue time instead of dequeue time, preventing queue explosion, redundant point allocations, and GC micro-stutters.
- Null & Zero-Dimension Guards: Hardened
BuildRoundedTexture,DrawRoundedArt, andTruncateTextagainst zero-size rectangles, disposed textures, or abnormal window states. - Window Inactive Hover Filter: Buttons no longer show hover highlights when Stardew Valley is running in the background or alt-tabbed.
- Expanded Glyph Compatibility: Added ASCII normalizations for German, French, Spanish, Scandinavian, Polish, Romanian, Czech, and Ukrainian characters to guarantee no song titles render with box character (
□) glitches. - SMAPI 1.6+ Modern Manifest: Added
"MinimumGameVersion": "1.6.0"tomanifest.json.
🌿 Junimo Jams — v5.2.0 Changelog
Previous Release
🎶 Universal YouTube Music Support
- Browser & Desktop Support
- Out-of-the-box support for browser-based YouTube Music (including Chrome, Safari, Edge, Brave, Arc, Firefox, Helium, and more).
- Native desktop app integration.
- Real-Time Tracking
- Built using custom native hooks: Windows
EnumWindows, macOS AppleScript, and Linux MPRIS2. - Song transitions are detected instantly without becoming stuck in browser window title caches.
- Built using custom native hooks: Windows
🎵 Massive Player Expansion
- New Built-in Players
- Added plug-and-play support for TIDAL, Deezer, Cider, Plexamp, foobar2000, MusicBee, AIMP, Winamp, MediaMonkey, VLC, Strawberry, and Rhythmbox.
- Custom Process Monitoring
- Easily track any unlisted media player by adding its process name directly to the
ExtraPlayerssetting in yourconfig.json.
- Easily track any unlisted media player by adding its process name directly to the
🗺️ Smart Map Hiding
- HUD Auto-Hiding
- The HUD now automatically hides itself whenever you open the world map (
Mkey) or any non-inventory menu. - Fully compatible with World Atlas and other UI-overlay mods.
- The HUD now automatically hides itself whenever you open the world map (
✨ Advanced Album Art Engine
- Jaccard Token Similarity
- Browser playing states (like raw YouTube Music window titles) are parsed and queried against the iTunes API.
- Results are scored using a smart Jaccard word-token matching algorithm to resolve exact artist names and download high-quality 600x600px cover art.
- Smart Local Caching
- Downloaded covers and resolved titles are cached inside the
cache/folder (as.pngand.txtfiles) for instant loading during replay with zero network overhead.
- Downloaded covers and resolved titles are cached inside the
🎨 Visual & Polish Upgrades
- Transitions — Added a cozy, smooth fade-in animation for album art and text when a new track starts.
- Drop-Shadows — Subtle drop shadows applied to text labels to guarantee readability on bright custom themes.
- Button Hover Glow — Playback controls respond with an interactive, glowing visual feedback.
🔠 Unicode normalisation (Character Fixer)
- Font Normalization
- Converts special Turkish (
ı,ş,ğ,ç,ö,ü), Cyrillic, and international characters. - Fixes empty square glyphs ("box character") by mapping them to legible font counterparts.
- Converts special Turkish (
🐛 Bug Fixes & Under-the-Hood Improvements
- Performance: Prevented duplicate playback status queries to reduce resource usage and optimize performance.
- Stability: Resolved feature disparities across platforms (Windows, macOS, Linux).
This mod has no additional files