Releases: gabrielluizone/Svartifoss
Release list
Svartifoss 2.1.1 - Configurable AOD & watch-detection fix
Svartifoss 2.1.1
Watch
- Configurable always-on display (AOD): a new "Always-on display" section
in the phone's Watch face tab controls how ambient mode looks — pick the
style (Follow face, Classic, Expressive, or Minimal) and toggle the
album art (off = pure black background, a real battery saver on AMOLED),
the clock, and the track title/artist individually. The existing
ambient album-art opacity setting moved into the same section. - Expressive face now has its own AOD: ambient mode no longer snaps the
Expressive face back to the classic look. The new expressive AOD keeps the
same layout — title/artist, prev/cookie/next, contour progress ring, and
the queue/volume/menu pill trio — but rendered as thin outlines over black
(the Wear OS 6 system media controls' AOD look): no fills, no animations,
no marquee, burn-in protected by the same pixel jiggle, and deliberately
few lit pixels so hours of AOD stay cheap on battery. - AOD outline color, brightness, and per-element toggles: the outlines
can stay white or take the album color (or a custom color — both lifted
automatically so dark accents stay readable on black), an AOD brightness
setting (20–100%) dims everything for extra battery savings, and the
transport buttons, progress ring, and bottom pill trio can each be shown
or hidden individually. Because the expressive AOD keeps the exact button
positions of the awake face, the tap that wakes the watch lands with your
finger already on the button you were aiming at.
Phone
- Fixed the phone often failing to detect that the watch app was installed,
incorrectly showing an "Install Svartifoss on your watch" prompt even when
it was already there and working. The check ran on a long-deprecated,
blocking Play Services API that frequently never completed on current Play
Services builds. Also fixed that prompt's button opening a dead Play Store
page on the watch (the app isn't on the Play Store) — it now opens the
GitHub releases page instead, matching the equivalent fix already shipped
on the watch side.
Svartifoss 2.1 - New Themes
Svartifoss 2.1
Phone
- New Watch tab, in the slot the Guide used to occupy: a dedicated visual
customization screen for the watch's now-playing screen, with a live
miniature preview — face (Classic/Expressive), screen theme, album
background (style/blur/dim), colors (dynamic accent, artist/progress color
sources), and mini-button appearance/offset — previewed exactly as it will
render on the watch and synced there on every change. While music plays on
the phone, the miniature mirrors the actual current track (real album
art, title, artist, the accent extracted from that art, and live playback —
the progress ring and track time advance in real time). These appearance
settings moved out of Settings, which now keeps only behavior options. - Guide moved to the toolbar: the usage guide no longer takes up a
bottom-nav tab slot — it now opens from a help button in the toolbar,
freeing that slot for the new Watch tab above. - The app is now fully navigable without a paired watch: every screen
(Watch, Playing/Stopped controls, Actions, Settings) is reachable even with
nothing connected — only the physical-buttons section of the button-config
screens needs a live watch, and it already hides itself gracefully when
there's no data. A dismissable banner in Settings clarifies that watch
settings still save and sync even without a paired watch. - Portuguese (Brazil) translation completed for the phone app. The watch
app and shared module were already fully translated; the phone app's ~320
strings and option lists (themes, screen styles, etc.) are now translated
too, so the whole app is consistent in pt-BR. - Support the project: a link to Buy Me a Coffee
in the app's navigation drawer (swipe in from the left edge), for anyone
who wants to help out. The app stays fully free either way — nothing is
gated behind it. - The Overlays & queue style pickers (volume, quick panel, queue screen)
moved up to right after Screen face on the Watch tab, closer to where
they belong given how much they change the look. - Fixed the "No watch connected" banner in Settings flashing on and back off
immediately when a watch actually is connected. - Fixed the Watch tab's live preview briefly showing the default accent
color before switching to the real album-art color when a track loads.
Watch
- New Expressive now-playing face: alongside the classic layout, a new
face mirrors the Material 3 Expressive system media controls — a soft
"cookie" play/pause button (morphs to a circle when paused) wrapped in a
progress ring that follows its scalloped contour, large round prev/next
buttons in the album accent's tonal colors, an accent-tinted/vignetted
album backdrop, and a queue/volume/menu glass trio at the bottom whenever
no mini buttons are configured. Switch faces from Settings → Screen face;
every gesture, button, overlay, and the quick panel behaves identically on
both, and ambient mode always falls back to the classic, burn-in-safe look. - Expressive face touch seek: a new setting picks how touch-seeking works
on the Expressive face — drag the Central ring around the cookie button
(with a live time readout), show the Edge ring (the classic bezel seek
ring), or None (leave seeking to the rotary crown). - 13 new overlay & queue styles: the volume overlay, quick-actions panel,
and queue screen each get an independent style picker (Settings →
Screen face → Overlays & queue) — Glass, Minimal (AMOLED), Material, Tonal,
Neon, Light, Gradient, Mono, Outline, Duotone, High Contrast, Terminal, and
Frost. - Eliminated watch UI freezes on track change: album-art and custom-list icon
decoding, the complication's cover re-encoding, and the media session's
cover transfer were all blocking the watch's single main thread on every
music-state push — they now run off it, and an unchanged cover is skipped
instead of redecoded. - Fixed the watch's shuffle/repeat/like state rings getting stuck after a
state update was wrongly deduplicated away, fixed a possible crash from a
volume divide-by-zero, fixed the back key swallowing the configured
back/dismiss action on watches that deliver it as a key event, fixed a
config-backup import never actually reaching the watch, and fixed a few
memory/listener leaks.
Svartifoss 2.0
Svartifoss 2.0
The app is renamed Svartifoss (formerly Music Center for Wear / Lyra Player). This is the largest release since 1.10: a full Wear OS modernization (system MediaSession integration, Jetpack Compose UI, Tiles and a watch-face complication), several new assignable actions, and a redesigned phone app.
Install the phone APK on your phone and the wear APK on your watch (see the README for sideloading instructions — Wear Installer makes the watch side easier).
Rebrand
- App renamed to Svartifoss; package IDs renamed
com.matejdro.wearmusiccenter→com.svartifoss.snfell(mobile + wear) andcom.matejdro.common→com.svartifoss.snfell.common. - Wear
minSdkraised 25 → 26 (required by the Tiles APIs below); target SDK bumped 30 → 34.
System integration (wear)
- New watch-side MediaSession proxy: mirrors the phone's now-playing state (title/artist/art/position/playback + remote volume) and forwards transport controls back to the phone. Playback now appears in and is controllable from the system Media Controls app and other Wear OS media surfaces.
- The Wear OS recents/app-switcher card now shows the currently playing track name instead of just the app name.
- Media Tile: glanceable ProtoLayout tile with track/artist and prev/play-pause/next controls.
- Queue-preview Tile: shows the next queued track, tap to skip.
- Watch-face complication: current album art / title-artist, tap to open the app.
New actions (assignable to any button/gesture)
- Play/Pause toggle, Stop, Restart track, Mute toggle, Repeat-one (direct on/off), Like/Favorite, Shuffle, Repeat.
- Search: opens voice/keyboard input on the watch and resolves the query against the playing app's media library, with a replay/delete-able search history.
- Playlist shortcuts: name + deep-link shortcuts managed on the phone (optional shuffle flag), reachable as a watch list or bound to a button.
- Play liked songs / Play liked songs, shuffled (YouTube Music).
Wear UI overhaul
- Full-screen Jetpack Compose queue and menu screens, replacing the legacy
WearableDrawerLayoutdrawer. - Configurable mini-buttons row and a quick-actions panel, both assignable through the button/action pipeline, with per-item styling (curve, background, color).
- Swipe gestures generalized: up/down/left can each be assigned any action.
- Long-press the center screen to open the queue directly.
- New screen theme options (default/minimal/compact/cinema), album-art style (cover/blur/black-and-white/blur+bw/hidden) with blur radius and dim strength, ambient opacity, rotary dead-zone and volume/seek overlay timeout.
- Configurable title text behavior: Automatic (shrink, then wrap, then scroll), always Scroll, always Wrap to two lines, or Shrink-to-fit only.
- Independent artist text and progress bar accent colors: each can be neutral (static theme color), album-derived (optionally desaturated), or a fixed custom color.
- Rotary-crown seek: turning the crown scrubs the timeline instead of changing volume (optional).
- Portuguese (Brazil) localization.
Mobile UI
- New "Lyra" settings/color-picker/player redesign with a single source of truth for the live accent color.
- New Guide tab with a Wear OS usage walkthrough; new left navigation drawer with app/author info.
- Built-in icon picker for custom action icons.
- Fresh installs now seed the button configs, action list and watch-behavior settings from a bundled default configuration instead of a generic auto-detected guess.
Bug fixes
- Shuffle button no longer shows as active for apps that never set their shuffle mode.
- Repeat button now correctly detects "repeat one" on apps (e.g. Retro Music) that report it as
REPEAT_MODE_GROUP. - Album art now loads on apps (e.g. Retro Music) that provide it as a
content://URI instead of a raw bitmap. - Like/favorite button now reliably reflects state on the watch after toggling.
- Legacy drawer queue could still appear on some apps instead of the new queue screen — fixed.
- Watch round-screen clipping in light mode (now-playing clock circle cut off at the bezel) — fixed.
- Queue screen no longer stutters while scrolling (removed a per-row offscreen render pass; animations pause during active scrolling).
- Watch-face complication cover no longer flashes back to a placeholder icon when a refresh lands before the album art finishes transferring.
- Equalizer icon now uses consistent bar geometry across the notification, ambient indicator and queue screen.
- Saved button configs could silently fail to load in release builds — a proguard rule protecting reflection-based action deserialization still referenced the pre-rename package, so R8 stripped it. Fixed.
Full changelog: CHANGELOG.md
1.13 - Design System & Wear OS Enhancements
Lyra 1.13
Added
-
I will replace this name in the next update.
-
Renamed the mobile app to Lyra Control and the Wear OS app to Lyra Player.
-
Introduced the Material Design 2:
- Google Sans typography throughout the application.
- OLED-first dark theme with pure achromatic neutral colors.
- Theme selector with Clearly White, Just Black, and Follow System options.
- Hidden Developer Mode unlocked by tapping the version entry seven times.
-
Added a Wear OS Tile providing quick playback controls (Play/Pause, Previous, Next) with live playback state and tap-to-open support.
-
Added a Guide tab to the mobile application documenting all supported watch interactions, including touch zones, gestures, physical buttons, rotary crown, swipe actions, the Wear OS Tile, and system media controls.
-
Added new assignable actions:
- Play/Pause Toggle
- Stop
- Restart Track
- Mute/Unmute
-
Added optional rotary crown seeking, allowing the crown to control playback position instead of volume.
-
Added a RetroMusic-inspired mini player featuring:
- Album artwork loaded from
MediaMetadata. - Interpolated playback progress updated every 500 ms.
- Outlined transport controls.
- Automatic fallback artwork when no album cover is available.
- Album artwork loaded from
Changed
- Replaced the legacy navigation drawer with a bottom navigation bar (Playing Controls, Stopped Controls, Actions, Settings).
- Redesigned the button configuration screens with a realistic interactive watch-face preview.
- Updated the gesture picker and action editor dialogs.
- Migrated navigation and media control icons to the Material Symbols outlined style.
- Updated dialog backgrounds to use adaptive surface colors in both light and dark themes.
- Standardized dialog buttons using the outlined Material Components style.
- Increased the Wear module minimum SDK from API 25 to API 26 to support Wear OS Tiles.
Fixed
- Fixed action and gesture icons not rendering correctly in light and dark themes.
- Fixed touch-zone icons rendering outside the watch-face preview.
- Fixed dialog windows displaying an incorrect white background in dark mode.
- Fixed physical button icons not adapting correctly to the active theme.
- Fixed excessive spacing between song title and artist in the mini player.
Notes
- The Wear module now requires Android API 26.
- Wear OS Tile and rotary seeking require the updated watch APK.
- Restored the original PNG launcher icons.
- This release introduces the foundation of the Lyra visual identity across both the mobile and Wear OS applications.
Miscellaneous
- While others are resting on Saturday, I’m still shipping this release. Social life improvements are still pending.
1.12 — Wear OS modernization, MediaSession, Compose queue
What's new
Wear OS modernization (Phase 0 + 1)
- Watch-side MediaSession proxy (
WatchMediaSession) — the watch app now appears in the system Media Controls app and all Wear OS media surfaces, with fully working transport controls (play/pause, skip, seek, remote volume) - Current track name now shown on the Recents screen under the app name
- New skip next / skip previous command channel from watch to phone
- targetSdk bumped 30 → 34 (Android 14 compliant):
android:exportedon all intent-filtered components,mediaPlaybackforeground service type,POST_NOTIFICATIONSruntime request
Performance
- Reduced button latency: phone node-id is now cached on connect instead of being resolved with a
getConnectedNodes()round-trip on every button press
Playback queue redesign (wear)
- Queue screen fully rewritten in Jetpack Compose (
QueueActivity+QueueScreen) - Dark glass pills layout with the active track highlighted in the album's lightened accent colour
- Animated three-bar equalizer indicator next to the playing track
- Long titles scroll with marquee inside the pill
- Curved clock along the top bezel (Wear OS style); fades out when scrolling down
- Thin curved scroll indicator on the right bezel — fixed thumb size (no erratic resize with the rotary crown), auto-hides after 1.2 s
- Swipe-to-dismiss closes only the queue and reveals the player underneath; system window animation suppressed to prevent a double-close visual flash
- Google Sans typeface throughout, matching the rest of the watch UI
- Artist name on the now-playing screen and quick-actions panel uses a HSL-lightened version of the album accent (dark colours become a readable pastel)
Bug fixes
- Shuffle button always appeared active: apps that never set shuffle mode report
SHUFFLE_MODE_INVALID (-1)which is not equal toSHUFFLE_MODE_NONE (0), causing the button to light up on every app. Fixed by checking for explicitly-ON states only (ALL/GROUP) - Repeat button skipped "repeat one" on some apps (e.g. Retro Music):
REPEAT_MODE_GROUPwas falling through to theelse → NONEbranch inRepeatAction, bypassing repeat-one. Fixed - Album art not showing on Retro Music and other apps: many apps on Android 10+ provide art as a
content://URI rather than a rawBitmap. Added URI fallback viaContentResolver(ALBUM_ART_URI/ART_URI/DISPLAY_ICON_URI) - Like / favourite button not reflecting state on watch after toggling: some apps don't immediately re-publish their playback state after handling a custom like action. A forced state re-read is now scheduled 500 ms after every like action
v1.11 Beta
Beta build of the dark "glass" redesign of the watch UI, plus new playback features.
Installing
This is a sideloaded app (not on the Play Store) - install both APKs:
SvartMusicCenter-mobile-v1.11-beta.apkon your phoneSvartMusicCenter-wear-v1.11-beta.apkon your watch (e.g. via Wear Installer)
These are debug builds (no release signing key configured yet) - expect some rough edges, this is a beta.
What's new
See CHANGELOG.md for the full list. Highlights:
- Dark "acrylic/glass" redesign of the watch UI (Google Sans, no Material 3)
- Circular drag-to-seek progress bar, redesigned volume control
- Like/shuffle/repeat actions with real state synced from the phone
- New quick-actions panel (double-tap the center play/pause button): like/shuffle/repeat + a queue shortcut
- Local play-history fallback for the queue screen when the playing app doesn't expose one
- Queue/history screen restyled to match the stock Wear OS look