Skip to content

Feat/UI ux overhaul utkarsh 2 - #1

Open
utkarshdalal wants to merge 74 commits into
ObfuscatedVoid:feat/ui-ux-overhaulfrom
utkarshdalal:feat/ui-ux-overhaul-utkarsh-2
Open

Feat/UI ux overhaul utkarsh 2#1
utkarshdalal wants to merge 74 commits into
ObfuscatedVoid:feat/ui-ux-overhaulfrom
utkarshdalal:feat/ui-ux-overhaul-utkarsh-2

Conversation

@utkarshdalal

Copy link
Copy Markdown

No description provided.

utkarshdalal and others added 30 commits December 15, 2025 19:59
#342)

* Added back PhysicalControllerHandler, improved haptic feedback for onscreen controllers

* removed unnecessary function

* removed method call

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* add support for hidden dlc

* Update dlcForAppId retrieval logic
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Ensures that the default controls profile (controls-0.icp)
is present by copying it from assets if it's missing.

This prevents issues where users may not have a default
controls configuration.
* Fixed bug where proton wasn't extracted, added back legacy wrapper, should fix wrapper check crashes

* Only extract proton for whitelisted versions and don't show progress for extraction

* made executablepath dropdown readonly so it doesn't allow text entry

* Fixed tests and duplicated folder creation for goldberg cloud saves

* updated tests

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* fix(): add fr to lang select

* fix(): added comma to fix
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* force extraction of fex, wowbox64 and box64 on game launch

* undid wine utils changes that was overwriting files on bionic

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* force extraction of fex, wowbox64 and box64 on game launch

* undid wine utils changes that was overwriting files on bionic

* Fixed fexcore versions, added newest vkd3d, updated default fexcore version

* Set default variant for turnip-capable devices to bionic

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* Remove friend and chat features. Migrated database to drop unused tables. Maintain local persona status.

* Remove useless method.

* nit kdoc

* nit idiom

* Cache some local persona info to preferences.

* Silly auto correct
* update DownloadInfo change to CopyOnWriteArrayList for concurrent usage

* Update DepotDownloader download and file write size

* Improves download performance

Reduces default download and decompress ratios to improve download performance and stability.

Enables debug logging for depot downloader to aid in troubleshooting.

Introduces `maxDecompress` parameter to DepotDownloader to control number of parallel decompress tasks.

Ensures single file write thread to avoid potential storage I/O contention.

* Reduces CPU usage during decompression.

Decreases the default decompressRatio from 1.0 to 0.5.

This change prioritizes UI responsiveness and other tasks by
reducing the CPU resources allocated to decompression, ensuring
a smoother user experience during downloads.

* Passes parent job to download coroutine

Ensures proper coroutine management and cancellation within the download process.
This allows for better control and responsiveness when handling downloads,
especially in scenarios where the parent job is cancelled or completed.

* Setup download performance based on user setting

Configures the download and decompress ratios based on the user-selected download speed to optimize performance.

It now dynamically adjusts these ratios based on the number of CPU cores available.

Ensures that write operations use a single thread, suitable for mobile storage.

* Adjust download and decompress ratios for speed 8
* feat: Adding string for Ukrainian language

* feat: Adding string for Ukrainian language

* Revert "feat: Adding string for Ukrainian language"

This reverts commit f04ae08.

* feat(): ukrainian language

* feat(): fixed punctuation

* feat(): changing folder name

* feat(): refining

* feat(): formating fix
Excludes the OSGI manifest file to resolve potential conflicts or issues during packaging. This exclusion ensures a cleaner and more compatible build output.
* fix(): Fixed custom resolution setting crash by giving it a proper dialog.

* Added templated strings for container config.

* string fixes

* Extra protection for crash and removal of unused variable.

* Fixed issue with string resources and composables.
Updated javasteam version from 1.8.0-SNAPSHOT to 1.8.1-SNAPSHOT.
* Add files via upload

* fixing some strings

* Fixed some strings and add german Language

* Fixing spelling
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
…d, connection is lost, and screen is turned off and then on, it gets stuck on connecting to steam otherwise
phobos665 and others added 24 commits January 10, 2026 17:44
* Added new box64, wowbox64, fexcore, turnip drivers. All verified as correct by doing cross-comparison. Will now test.

* Fixed naming of new turnip driver

* Updated fexcore 2601 to work on 32 bit on older devices

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* Fix auto migration

Avoid data get wiped on version upgrade from 8 -> 10

* Updates Room runtime to version 2.8.4

Updates the Room runtime library to the latest stable version.
* Improves DLC selection and download status

Adds a "Select All/Deselect All" button to the game manager dialog for easier DLC selection.

Shows installed DLC even if a download is in progress for the base game.

This improves the user experience by allowing users to quickly select or deselect all available DLCs and clarifies the download status of apps.

* Corrects DLC installation logic in game manager

Addresses an issue where DLCs were not correctly identified
as installed, particularly concerning optional and indirect DLCs.

Updates the logic to accurately determine the installation
state of DLCs based on their type and installation status,
ensuring a more reliable user experience.

* does not delete app_info data when login or steam login has error

* updates JavaSteam to add delay on large depots size
…c, tests for cloud sync (#408)

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* Remove duplicated log lines

Moves the Timber log listener instantiation to the top of the class and removes it on service destruction for proper logging behavior.

Adds a prefix "Main:" or "UserLogin:" to Timber log messages to quickly identify the source of events.

* Adds Timber tag to view model logs

Adds a Timber tag to logs within MainViewModel and UserLoginViewModel.
This improves log filtering and debugging by providing context.
* Significantly reduced calls to fetch game runs and get best config, cache for 1 day

* Updated cache to be 3 day for game runs

* coderabbit, fixed tests

* Hopefully fixed failing tests in Github?

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* All strings translated

* Fixing translation

* extra space deleted

* refining

* refining

* fixing syntax

* fixing strings

* punctuation refining

* added missing lines
…cket (#410)

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
… steam client (#411)

* Implements Steam auto-login feature

Adds Steam auto-login using steam-token for automated configuration.

This implementation introduces a two-phase process to manage
`config.vdf` and `local.vdf` files, handling token encryption,
decryption, and JWT validation to ensure secure and persistent login.

Disables Steamless integration and game ticket requests when
launching with Real Steam to avoid conflicts and ensure proper operation.

Implements a mechanism to backup and restore Steam client files before applying modifications. This ensures that the original files can be restored, facilitating a smoother experience.

* Refactors VDF parsing for Steam login

Replaces custom VDF parsing logic with `javasteam` library's `KeyValue` class.

* add launch options to localconfig.vdf

Dynamically updates or creates the localconfig.vdf file to inject command-line arguments into Steam launch options.
This allows the application to pass container-specific parameters to the launched game, enabling autologin functionality.

* null checking

* Cleaned up steam token generation, added tests

* updated execShellCommand to only return output and not error

* moved SteamTokenLogin after environment.addComponent

code cleanup

---------

Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
* Migrated the GOGDL code to Kotlin. Quite simple, just storing/retrieving auth information and doing REST API requests correctly.

* Removed old comments

* fixed to run off the IO thread for file-based operations.

* Added tests

* test dependencies updated.

* Added IO optimisations for read/write operations in auth manager and updated dependencies.

* Fixing gradle misstype

* Adjusting the buld gradle

* Fixed issue with the libs

* test

* fixed issue with http client, so we re-use
* Store Icons added to the list, capsule and hero items.

* Update to take into account Custom game
* Migrated the GOGDL code to Kotlin. Quite simple, just storing/retrieving auth information and doing REST API requests correctly.

* Removed old comments

* fixed to run off the IO thread for file-based operations.

* Added tests

* test dependencies updated.

* Initial commit. Code Clean-up incoming.

* revert of the batch changes, will test as-is for now and then look at how co-routines work with batch-api requests.

* Added comment regarding rate limiting.

* WIP.

* Improved logging. Game Parsing is complete based on GOGDL specs.

* Removed execute command for Python Bridge as it's no longer needed.

* Added IO optimisations for read/write operations in auth manager and updated dependencies.

* Fixing gradle misstype

* Adjusting the buld gradle

* Fixed issue with the libs

* test

* Fixed issue with duplicates and non-installables getting through the parser. Also added an exclude property so we don't always iterate over ignored items.

* Added exclusion for the gog galaxy app as it's not required to be fetched

* very WIP.

* WIP WIP

* Now hooked into the proper emitters for progress

* Fixed issue with download events.

* Simplifcation of the GOG integration now.

* Removed old download logic.

* DLC Auto-Install, fix for game directory setting and retry on failed download.

* Code tidy-up and moving out some functions to general util flies.

* Refactors to make things much more readable.

Also added directory for adding the commonredist path to the game.

* Removed Python from project.

* Remove chaquy from project

* update gogdownloadmanager refence

* removed fix on authmanager

* Added tests for Path construction for installPath

* Updated tests to remove fluff and just test the real amount.

* Removed unused function

* Putting game back as I clearly missed it :D

* Added Tests for parsing functions.

* Fixing exclusions

* Fixed issue where we only started the service if we were outside of the refresh library throttle period

* Updated downloading logic so that it filters the depots based on the owned IDs. This way we don't accidently grab a manifest url for a DLC we don't own.

* Fixing up the download issue. I needed to use the depots' productId instead of the gameId. This fixues the problem with DLC downloads.

* WIP Slowly refactoring and fixing up dependency downloads.

* Updating for dependencies flow

* manifests and repositories done. Onto donwloading dependencies.

* Fixing dependencies

* Dependency downloads working. We may have to figure out how to determine if we should check for things like SCUMVM to be put into the root folder instead.

* Fixed issue where root dependencies were not installed correctly.

* Fixing dependency recursive folder

* Updating the removal off extra path from the path so we can put it into the correct place.

* QoL changes to parsing and api clients

* Small tidy-ups

* Removed problematic logs

* Fixed comments.

* defensive programming and removed unneeded file.

* Fix issues with potential infinite lops and breaking nulls

* Updated comments.

* Fixing tests and brace missing. Also parsed ids as strings correctl for getting the gameIds so we don't cause a potential error with comparisons.

* Added null return if no compressedSize is given. Doubt this will happen though.

* Added quick null-check on datamodels.

* Fixed issue where I wasnt using the input stream correctly for decompression

* Added the migration from 10 to 11.
Co-authored-by: Utkarsh Dalal <utkarsh.dalal@toptal.com>
…an translation by me. (#422)

* Create ph.md

* Romenian translation by MXXME (Discord)

* Deleted placeholder file

* Add Romanian language support in build.gradle.kts

* Update strings.xml

* Add install space string for Italian localization

One string was missing
# Conflicts:
#	app/src/main/java/app/gamenative/PrefManager.kt
#	app/src/main/java/app/gamenative/data/SteamFriend.kt
#	app/src/main/java/app/gamenative/service/SteamService.kt
#	app/src/main/java/app/gamenative/ui/PluviaMain.kt
#	app/src/main/java/app/gamenative/ui/data/LibraryState.kt
#	app/src/main/java/app/gamenative/ui/model/LibraryViewModel.kt
#	app/src/main/java/app/gamenative/ui/model/MainViewModel.kt
#	app/src/main/java/app/gamenative/ui/model/UserLoginViewModel.kt
#	app/src/main/java/app/gamenative/ui/screen/library/LibraryAppScreen.kt
#	app/src/main/java/app/gamenative/ui/screen/library/LibraryScreen.kt
#	app/src/main/java/app/gamenative/ui/screen/library/appscreen/SteamAppScreen.kt
#	app/src/main/java/app/gamenative/ui/screen/library/components/LibraryAppItem.kt
#	app/src/main/java/app/gamenative/ui/screen/library/components/LibraryBottomSheet.kt
#	app/src/main/java/app/gamenative/ui/screen/library/components/LibraryListPane.kt
#	app/src/main/java/app/gamenative/ui/screen/settings/SettingsGroupInterface.kt
#	app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
#	app/src/main/java/app/gamenative/ui/theme/Color.kt
#	app/src/main/res/values/strings.xml
@utkarshdalal

Copy link
Copy Markdown
Author

I don't know what I did, but when I try to open a game now, I just get a black page.

@utkarshdalal

Copy link
Copy Markdown
Author

I fixed that, but games don't launch:

2026-01-19 20:05:51.566 ProcessHelper app.gamenative E Failed to execute command: java.io.IOException: Cannot run program "/data/user/0/app.gamenative/files/imagefs/opt/wine/bin/wine" (in directory "/data/user/0/app.gamenative/files/imagefs"): error=2, No such file or directory

And before that, it was failing because a dxwrapper wasn't set...

@utkarshdalal
utkarshdalal changed the base branch from feat/ui-ux-overhaul to master January 19, 2026 14:40
@utkarshdalal
utkarshdalal changed the base branch from master to feat/ui-ux-overhaul January 19, 2026 14:49
ObfuscatedVoid pushed a commit that referenced this pull request Apr 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants