-
Notifications
You must be signed in to change notification settings - Fork 2
Releases: CharlexH/SideB
SideB 1.1.0 KNULLI/muOS Candidate 1
KNULLI/muOS Candidate test builds
These are experimental Candidate packages for people who have real KNULLI or muOS devices and want to try SideB.
They are not Stable support yet. I do not currently have real KNULLI/muOS hardware validation for launch, display, input, Spotify Connect, local playback, or clean exit.
Assets
SideB-1.1.0-knulli-candidate.zip- KNULLI / PortMaster-style Candidate packageSideB-1.1.0-muos-candidate.muxapp- muOS Archive Manager Candidate packagecandidate-test-checklist.md- what to report if you test it
Please report
If you try one of these builds, please include:
- Device model and OS version
- Archive filename and SHA256
- Install path
/tmp/sideb.log/tmp/go-librespot.log- Whether launch, display, input, Spotify Connect, local playback, and exit worked
If there is no feedback, these platforms will remain Candidate-tier and non-blocking for future releases.
Assets 5
v1.1.0
What's New
- SDL local playback: downloaded and imported MP3s now play through SideB's SDL audio callback with bundled ffmpeg-lite PCM decoding, replacing the old aplay output path.
- More resilient downloads: pending downloads persist across restarts, startup restores incomplete work, yt-dlp progress is reflected in the UI, and short failure notices distinguish cookies, YouTube challenges, network, storage, missing tools, and no-match cases.
- Better local MP3 imports: ignores macOS metadata files, supports album-folder cover.* and folder.* artwork, backfills missing covers for existing managed tracks, and keeps remove/re-add behavior safer around the currently playing file.
- Release hardening: package builds now use the GNU/glibc target needed for SDL loading, verify ffmpeg-lite capabilities, validate release metadata, and check the three platform archive layouts.
Assets
- SideB-1.1.0-nextui.zip for NextUI Pak Store / Tools installs
- SideB-1.1.0-stock.zip for Stock OS Apps installs
- SideB-1.1.0-crossmix.zip for CrossMix Apps installs
Validation
- cargo test: 163 passed
- release metadata check: passed
- package build and zip layout checks: passed
- device smoke test: v1.1 SDL backend loaded libSDL2 and played local MP3s via backend=sdl
Experimental Candidate packages
KNULLI and muOS packages are attached for testers with real devices. They are Candidate builds, not Stable support yet.
- SideB-1.1.0-knulli-candidate.zip
- SideB-1.1.0-muos-candidate.muxapp
- candidate-test-checklist.md for feedback reports
Assets 8
v1.0.12
Local cover art can now be added to already-imported tracks by placing a same-name image next to the MP3 in data/music. New manual MP3 uploads should still go through data/imports so SideB can create the managed library entry.
Assets 5
v1.0.11
Hotfix release for local/offline playback on NextUI.
Changes:
- Rebuilds the bundled
ffmpeg-litewith the realpcm_s16lemuxer component behind-f s16le. - Strengthens the FFmpeg packaging gate to require
libmp3lame,pcm_s16le, and a runtime-openables16lemuxer. - Adds a regression script so invalid FFmpeg component names are rejected before packaging.
Validation:
cargo fmt --manifest-path spotify-ui-rs/Cargo.toml --checkcargo test --manifest-path spotify-ui-rs/Cargo.toml(138 passed)./scripts/check_ffmpeg_audio_transcoder.sh package/SideB.pak/ffmpeg-lite./scripts/test_check_ffmpeg_audio_transcoder.sh./scripts/package.sh- Verified the NextUI zip contains the same
ffmpeg-litechecksum as staging and exposesMuxer s16le. - Verified on device that
/tmp/ffmpeg-litecan decode a real MP3 to 1 second ofs16lePCM.
Assets 5
v1.0.10
- Fixed local MP3 playback on NextUI by using SideB's bundled ffmpeg-lite decoder path.\n- Rebuilt ffmpeg-lite with libmp3lame and s16le support for download transcoding and local PCM playback.\n- Added short on-device playback failure notices such as Missing ffmpeg and Missing aplay.\n- Updated the waiting screen copy to mention MP3 import.
Assets 5
v1.0.9
Changes
- Local MP3 import now scans nested folders under
data/imports/. - Album subfolders are imported into
FAV LISTautomatically. - Updated
pak.jsonto point Pak Store users atSideB-1.0.9-nextui.zip.
Assets
SideB-1.0.9-nextui.zipSideB-1.0.9-stock.zipSideB-1.0.9-crossmix.zip
Verification
git diff --checkcargo fmt --checkcargo test./scripts/package.sh
Assets 5
v1.0.8
What's Changed
- Added a compact status-bar battery icon with five battery levels and a dedicated charging icon.
- Reads battery percentage from NextUI /tmp/percBat first, then falls back to Linux power_supply capacity.
- Fixed charger-unplug detection by trusting Battery status=Charging instead of sticky USB online state.
- Added SideB Lock screen-off behavior and playback-aware sleep guards.
- Avoids suspend while Spotify/local playback, pause state, or downloads are active.
- Updated pak.json and release metadata to v1.0.8.
Verification
- cargo fmt -- --check
- bash -n scripts/package.sh scripts/check_ffmpeg_audio_transcoder.sh
- sh -n package/SideB.pak/launch.sh packaging/nextui/launch.sh packaging/stock/launch.sh packaging/crossmix/launch.sh
- cd spotify-ui-rs && cargo test battery && cargo test power && cargo test render && cargo test
- cargo build --release --target aarch64-unknown-linux-musl
- ./scripts/check_ffmpeg_audio_transcoder.sh package/SideB.pak/ffmpeg-lite
- ./scripts/package.sh
- Verified all three release zips contain the expected sideb binary, launcher, battery icons, ffmpeg-lite, go-librespot, yt-dlp, config, and license files.
Assets 5
v1.0.7
Pak Store install fix
This release fixes the NextUI Pak Store install layout for SideB.
Changes
- Fixed the NextUI release archive so its entries are rooted at the pak contents, matching Pak Store requirements.
- Kept Stock and CrossMix archive layouts rooted at
Apps/SideB/. - Added release-package layout validation to
scripts/package.shto prevent nested-install regressions. - Updated release docs and third-party binary source/checksum metadata.
Assets
SideB-1.0.7-nextui.zipfor NextUI Pak Store and manual NextUI installsSideB-1.0.7-stock.zipfor Stock OSSideB-1.0.7-crossmix.zipfor CrossMix OS
Checks
cargo test(105 passed)./scripts/package.shwith built-in zip layout validationjq . pak.jsonbash -n scripts/package.sh scripts/check_ffmpeg_audio_transcoder.shgit diff --check
Assets 5
v1.0.6
Performance Optimization
Major rendering performance improvements for reduced device temperature and smoother animation.
Changes
- 3x faster rendering: frame time reduced from 87ms to 25ms at 30 FPS
- Eliminated CPU busy-waiting: replaced spin-lock with blocking lock in network thread
- Fast alpha blending: bit-shift approximation (
div255) replaces integer division on ARM - Optimized drawing primitives: transparent pixel run skipping, row-based slicing, eliminated per-pixel bounds checks in
draw_image_alpha,draw_image_scaled,fill_rect - Smarter idle behavior: longer sleep when paused (300ms vs 100ms), skip dirty rect writes when nothing visually changed
- Reduced polling overhead: playlist repeat poll interval 10ms → 30ms
Results (measured on TrimUI Brick)
| Metric | Before | After |
|---|---|---|
| Frame time (avg) | 87ms | 25ms |
| Frame time (p95) | 101ms | 26ms |
| CPU temperature | 64°C | 35°C |
| sideb CPU usage | 25% | 10% |
| CPU idle | 40% | 84% |
Assets 5
v1.0.5
What's New
Smart Offline Caching
- Multi-candidate search: Searches 5 YouTube candidates instead of 1, scores each by duration match, title similarity, channel quality, and negative signals (cover/remix/live detection)
- Duration-based scoring: Uses Spotify's precise track duration as a fingerprint to select the best match
- Post-download validation: Verifies downloaded file duration against Spotify metadata (15s threshold), rejects mismatches and retries with next candidate
Download Progress Indicator
- Real-time progress shown in FAV LIST as a pie/fan indicator next to each track:
- White hollow circle — queued
- Yellow hollow circle — searching
- Yellow pie fill — downloading (progressive fill 25%–75%)
- Yellow pie fill — transcoding (75%–100%)
- Green filled circle — complete
- File-size polling approach for reliable progress tracking on embedded Linux
Download Resume
- Incomplete downloads (
downloaded: falsein favorites) are automatically re-queued on app startup - No need to unfavorite and refavorite to retry failed downloads
Other
- Node.js runtime support in launch scripts (for future yt-dlp enhancements)
- Spotify duration propagated through the entire download pipeline
- Screenshot references updated from .webp to .png