RELEASE NOTES

COMING SOON

1.3.5 8th April

  • Better RetroArch core support
  • Performance and bug fixes

 

1.3.3 30th March

New Features

– “What’s New” dialog — Shows once after app update with release highlights and optional quick actions (e.g. rescan folders)
– Manage Collection — New unified screen replaces the separate Emulator Manager and Platform Manager in the side menu
– Improved folder matching — Updated ROM/platform folder matching logic in RomHelper for better auto-detection

UI/UX Improvements

– Cleaner button/chip styling — Toggle buttons and genre chips now use solid opaque accents for the selected state and no background
for inactive, replacing the old glass gradient effect (applies to Session, Collection, and Genre views)
– Dimmed inactive text — Unselected buttons/chips show 50% alpha text instead of full white, improving visual hierarchy
– Drawer navigation sync — Side drawer now correctly highlights the current screen when opened
– Focus highlight fix — Suppressed Android’s default focus highlight on custom views to prevent screen dimming/brightness flash on
touch

Performance

– App size reduced significantly — Removed bundled example ROMs, VPinball table assets, and the FBNeo emulator .so from the APK;
rebuilt all native .so libraries with much smaller binaries (e.g. libvpinball.so went from ~254MB to ~26MB, libavcodec.so from ~62MB to
~13MB)
– Background animation optimizations — Pre-computed trig values, cached sprite bitmaps, removed per-frame allocations across all
renderers (Arcade Icons, Diamond, Kaleidoscope, Orb, Parallax, Wireframe, PlayStation Icons)
– Adaptive frame rate — Background renderer now runs at ~20fps when idle and boosts to ~60fps during swoosh animations, reducing
CPU/GPU usage
– AudioAnalyzer disabled — Removed real-time audio analysis processing for performance

Bug Fixes

– Session section state properly restored when navigating back
– BackgroundVisualView render thread lifecycle fixed (thread now fully stops before cleanup)
– Various stability improvements

1.3.0 16th March

New Features

Background Visuals System
– All-new BackgroundVisualView with a dedicated SurfaceView render thread for smooth animated backgrounds on the Play screen
– 7 background renderers: Orb, Diamond, Parallax, Wireframe, Kaleidoscope, Arcade Icons, and Iconic PlayStation
– Background visual type is selectable in Themes settings with a new cycling menu item

Color Scheme System
– New ColorScheme data class with 7 predefined schemes (4 dark, 3 light)
– ColorSchemeManager singleton with reactive StateFlow — all views update live
– Persisted via Room migration 5→6 (colorSchemeId field)
– Color scheme selector added to Themes view
– Applied across all fragments and custom views app-wide (45+ files touched)

Improvements

– Collection Cover View — major rewrite with improved layout and rendering
– Onboarding — RetroTV and TestPattern views refined; OnboardingV2Activity improvements
– Navigation drawer — custom vector icons for Emulator, Messages, Platforms, and Themes menu items; removed nav header
– Settings — extracted VPinball settings into dedicated VPinballSettingsView; cleaned up SettingsFragment
– Emulator/Platform manager — simplified fragment layouts, removed redundant back-button handling

Bug Fixes

– VPinball crash — fixed crash on devices where native code cannot access shared storage (file copy fallback in VPinballService)
– Codec race condition — use local refs and catch IllegalStateException in audio decoder
– Particle rendering — fixed bunching/stringing with global repulsion; particles now fill the whole view
– ConcurrentModificationException in NeuralGridRenderer
– AudioAnalyzer race condition — fixed thread lifecycle and notification of current music state on listener registration
– Long/Int comparison bug in AudioAnalyzer logging
– Settings UI — hide Install/Test hints and “Not Installed” status for non-notification CyclingItems

1.2.0 10th March, 2026

New Features

– Notification Themes — New Themes screen in the navigation drawer. Browse and download notification themes to customize your
experience.
– Amiga Platform Support — Amiga added as a supported platform with logo and localization across 17 languages.
– Platform Manager — New Platform Manager accessible from the navigation drawer with Add Folder, Start Scan, and Clear All
functionality.
– SAFFileManager — Centralized Storage Access Framework file operations (1,200+ lines), replacing scattered file access logic across the
app for more reliable file handling.

Improvements

– melonDS Fix — Added {file.narrowtreeuri} placeholder to resolve “Could not find rom” errors caused by URI tree root mismatches with
melonDS.
– 3DS Cover Sizing — Improved cover art sizing for 3DS titles in collection views.
– Glass UI Elements — New glass-style button and stat box drawables for a refreshed look.
– VPinball Updates — Player, settings, and launcher activities cleaned up; updated libvpinball.so binary.
– Emulator Manager — Reworked configuration panel UI and updated disclaimer messaging.

Bug Fixes

– Multiple rounds of stability and UI fixes (Mar 5–10)

1.1.1 24th February, 2026

Fixed infinite update loop (I’m an idiot)

1.1.0 – 23th February, 2026

In-App Update System

– App now silently checks Firestore for new releases on startup
– Retro-styled update screen shown when an update is available
– Download and install APKs without leaving the app
– Supports mandatory updates (blocks access until updated) and optional updates

Touch Input Support

– Settings screen: touch scrolling with fling/velocity support, tap to select items, tap header to go back
– Games grid: swipe to scroll, tap to select a game
– Session view: swipe to scroll, tap to switch sections, select genres, and launch games
– Collection browser: tap mode buttons (All/Console/Handheld/Arcade/Stamp Books), swipe to navigate platforms
– Emulator selection popup: touch-aware with proper hit testing

Settings UI Overhaul

– New fixed header with back arrow, “Settings” title, and version number display
– Content scrolls underneath the pinned header
– Confirmation dialogs now respond to touch input (tap Confirm/Cancel/outside)

Emulator Install Flow Improvements

– Install/update emulators via the X button in the emulator selection popup
– Live inline download progress bar with percentage shown per emulator
– Installation status automatically refreshes when returning from the system package installer
– Config panel simplified to read-only status display

Tutorial Hint Renderer

– New reusable controller button hint system with horizontal, vertical, and grid layouts
– Supports Xbox, PlayStation, and Nintendo button icon sets
– Animated D-pad compound hints cycle through direction icons
– Used throughout the emulator selection popup and other UI

Controller Preferences

– Controller button type (Xbox/PlayStation/Nintendo) now shared across processes via SharedPreferences
– VPinball native process and overlays show the correct button icons

First-Launch Splash Animation

– New animated logo sequence on first app launch, replacing the old SplashActivity
– SplashActivity converted to an activity-alias to preserve existing launcher shortcuts

UI Polish

– Custom retro square-corner toasts replace all system toasts throughout the app
– Airplane mode icon added to the WiFi status bar
– RetroEki logo tap now toggles the navigation drawer open/closed
– Removed excessive debug logging across Games, Session, and Collection views

Pinball Fixes

– Fixed VPinball player theme crash
– Fixed pause/resume lifecycle bugs in pinball
– Updated libvpinball.so

Game Launcher

– Fixed RetroArch variant launching when the installed package differs from the launch command template
– Removed dead killAllEmulatorProcesses() code

Platform & Data

– Pinball platform seeding now always force-writes correct extensions, aliases, and screenscraper ID (fixes Firebase sync overwriting
them with empty values)
– Added updatePlatformGameCount() to keep stored counts accurate
– PlatformEmulator model now includes core field and isPreferredForPlatform flag
– Added @IgnoreExtraProperties to prevent Firestore deserialization crashes

Background Services

– ProgressBackupService gracefully handles ForegroundServiceStartNotAllowedException on Android 12+
– Added POST_NOTIFICATIONS permission for Android 13+
– NFTMintingService changed to START_NOT_STICKY for proper lifecycle

Build System

– Migrated from KAPT to KSP for Glide annotation processing
– Upgraded to Android Gradle Plugin 9.0.1
– Upgraded Hilt to 2.59.1, KSP to 2.3.6
– Removed KAPT plugin dependency entirely

Backend

– New Competitions Manager admin page for managing pinball competitions
– Added competitions and pinball_scores Firestore collections

1.0.7 Alpha – 14th February, 2026

  • Fixed pinball GLES issue with shaders. Failed when Vulkan failed and fallback to GLES.

1.0.6 Alpha – 13th February, 2026

  • Changed asset resizing in Pinball for better memory.
  • Added custom pinball log reporting to help solve Retroid 5 issues.

1.0.5 Alpha – 12th February, 2026

  • Fixes for Pinball con-current memory allocation on certain devices.

1.0.4 Alpha – 12th February, 2026

  • Fixes for RetroArch variations (32bit, 64bit)
  • Fixes for device detection of Retroid devices
  • Fix for Flycast launch

1.0.3 Alpha – 9th February, 2026

  • Fix for missing pinball folder (i’m an idiot)

1.0.2 Alpha – 9th February, 2026

New Features

  • Visual Pinball X integration with Vulkan rendering
  • Custom DMD view with animated high scores and last score display
  • In-game pinball settings overlay with D-pad navigation
  • Camera controls for FOV, LookAt, and Layback with Reset Defaults
  • Per-table settings persistence
  • PinMAME ROM detection and VBScript patching
  • Table name and version display in pinball settings header
  • NVRAM high score parsing for 194 ROMs across Bally, Data East, Gottlieb,
  • Sega, Stern, Williams, and Zaccaria
  • Crash report submission to Firebase with logcat uploads
  • Game completion tracking with Completed section in Session View
  • Blockchain backup sync for completed games
  • Renamed Play Later List to Backlog
  • Reordered Session menu with Continue Playing, Backlog, Favourites, Game
  • Finder, and Completed
  • Increased max items per section from 10 to 100
  • Fade-in animation for section and genre changes
  • Shared game details panel across GamesView and SessionView
  • TV module refactored into modular components
  • Added AYN Odin 3, Retroid Pocket 4, 4 Pro, 5, 6, and G2 device support

Bug Fixes

  • Fixed Vulkan crash when pressing power button during pinball
  • Fixed quit crash by pausing render before stop
  • Fixed crash when pressing power button during VPinball gameplay
  • Fixed script error dialog YES/NO selection and button visibility
  • Fixed green border artifact and threading issues in pinball settings
  • Fixed PinMAME detection false positives on original tables
  • Fixed platform selection during mid-animation
  • Fixed flicker when navigating back to Session View
  • Fixed ANR on games refresh with background worker
  • Fixed returning to collection showing wrong platform position
  • Multiple native library fixes for Select Case nested Dim, array and
  • Controller.Stop, and Wine VBScript compatibility

Technical Changes

  • VPinball runs in separate process to isolate native crashes
  • Firebase Crashlytics and Firestore integration for crash reporting
  • Database schema refresh with isCompleted field on Game entity
  • Extracted duplicate code into shared GameDetailsPanelComponent
  • Removed debug logging and unused imports
  • Updated ProGuard rules and baseline profiles
  • Onboarding flow refactored

1.0.1 Alpha – 19th December, 2025

  • New Onboarding
  • Various Fixes for wallet restoration
  • Add multi folder support

1.0.0 Alpha – 1st December, 2025

  • Initial Release