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