Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
f3fd0d8
Added back PhysicalControllerHandler, improved haptic feedback for on…
utkarshdalal Dec 16, 2025
37de161
Feat: Add support for hidden dlc (#333)
joshuatam Dec 16, 2025
90cc7a3
Fixed cloud saves for games with missing ufs (#344)
utkarshdalal Dec 17, 2025
2d03e3a
bumped version
Dec 17, 2025
ab8f35c
Restores default controls-0.icp if missing (#348)
joshuatam Dec 18, 2025
17f55ad
Add french language (#349)
Robilol Dec 18, 2025
268f06c
0.6.1 fixes (#350)
utkarshdalal Dec 19, 2025
a191c27
fix(): Add French to the language select (#351)
phobos665 Dec 19, 2025
0622b97
Fixed glibc 0.3.8 box64
Dec 20, 2025
cef22fe
added fexcore 2512
Dec 20, 2025
bd419b7
bumped version
Dec 20, 2025
8052d38
force extraction of fex, wowbox64 and box64 on game launch (#353)
utkarshdalal Dec 20, 2025
43b99cf
Fex+box extractionfix (#354)
utkarshdalal Dec 20, 2025
eb30d1b
Fex+box extractionfix (#355)
utkarshdalal Dec 20, 2025
52793d0
bumped version in readme
Dec 20, 2025
524f388
Remove friend and chat features (#324)
LossyDragon Dec 21, 2025
a1d1311
Feat: Improve download performance (#328)
joshuatam Dec 21, 2025
45cbbb6
Feat/ukrainian language (#346)
Scrollname Dec 21, 2025
efbf14f
Update dependencies to use in.dragonbra:javasteam. (#358)
LossyDragon Dec 22, 2025
050b59d
Excludes OSGI manifest from packaging (#363)
joshuatam Dec 28, 2025
fcecab5
Add files via upload (#368)
Nazgile94 Dec 30, 2025
afcc910
Revert "Add files via upload (#368)" (#370)
utkarshdalal Dec 31, 2025
ff616bd
fix(): Fixed custom resolution setting crash (#373)
phobos665 Dec 31, 2025
e55c784
Update javasteam version in libs.versions.toml (#369)
joshuatam Dec 31, 2025
5e038f7
Update Simplified Chinese translation to align with its habits (#361)
SBBTD Jan 1, 2026
4436615
German Language - Fixed (#372)
Nazgile94 Jan 1, 2026
97f2f18
Handled cloud saves for games in offline mode (#374)
utkarshdalal Jan 1, 2026
90f9c06
fixed audio stopping after pause app (#375)
utkarshdalal Jan 1, 2026
195b9ae
don't clear isGameRunning when steam disconnects - if game is launche…
Jan 1, 2026
88a5a21
moved listing of exes off main thread to prevent ANRs when edit conta…
Jan 1, 2026
1774b56
Fixed break on PCGamingWiki
Jan 2, 2026
7770100
Latest gbe (#379)
utkarshdalal Jan 3, 2026
f48cb93
Fix a bug where preset resolutions were not applying correctly. (#381)
phobos665 Jan 4, 2026
b7d2b0a
Added 3d test option (#386)
utkarshdalal Jan 4, 2026
2da3349
Repair containers (#387)
utkarshdalal Jan 4, 2026
074606c
Fix update for DepotDownloader (#388)
joshuatam Jan 4, 2026
40e5984
A drive (#390)
utkarshdalal Jan 4, 2026
2e1aa91
bumped version
Jan 4, 2026
7e20b63
Revert "Fix update for DepotDownloader (#388)" (#391)
utkarshdalal Jan 4, 2026
c1c9940
Added ukrainian language to app list
Jan 5, 2026
fc8a354
Updated download url in readme
Jan 5, 2026
f0a0eef
Gog integration utkarsh (#393)
phobos665 Jan 5, 2026
ea26792
RedistInstall Refactor and openAL Installation (#343)
phobos665 Jan 5, 2026
2d30cc4
Temporary remove audio switching function (#396)
joshuatam Jan 6, 2026
645a79b
Adds audio playback capture permission. (#400)
joshuatam Jan 7, 2026
eb6a28c
Italian localization for my fellow italian gamers! <3 (#399)
Ashnar2602 Jan 8, 2026
e1bd6d9
When an app is uninstalled, store a persistent reference to it in Lib…
utkarshdalal Jan 8, 2026
a544235
Fixed top padding in landscape
Jan 8, 2026
175e715
Feat: Game Manager (#366)
joshuatam Jan 8, 2026
47e9a08
New Box64, wowbox64, fexcore and turnip driver (#405)
phobos665 Jan 10, 2026
707308b
Fix auto migration (#407)
joshuatam Jan 10, 2026
2452040
Improves DLC selection and download status (#406)
joshuatam Jan 10, 2026
3c9f119
Added fix for cloud saves not updating, visual feedback for cloud syn…
utkarshdalal Jan 10, 2026
f0b4ed8
Minor: Remove duplicated log lines (#377)
joshuatam Jan 11, 2026
4ea99c8
Reduce compatibility requests (#409)
utkarshdalal Jan 12, 2026
93c2dc3
All strings translated (#397)
Scrollname Jan 12, 2026
cd26d48
Send full encrypted app ticket proto instead of just the extracted ti…
utkarshdalal Jan 12, 2026
f9d067b
Supposedly allow fork PRs to have their tests run. (#412)
utkarshdalal Jan 13, 2026
8a5dd4a
Save physical controller mapping after updating (#413)
utkarshdalal Jan 13, 2026
2e7aa81
Add dummy credentials for PRs so tests run (#415)
utkarshdalal Jan 13, 2026
b283692
Added code to prevent duplicate tracking of game_exited (#417)
utkarshdalal Jan 14, 2026
5434637
Feat: Implement steam client auto login and launch options support in…
joshuatam Jan 14, 2026
5731682
GOG Auth Migration to Kotlin Implementation (#414)
phobos665 Jan 14, 2026
9816825
bumped version
Jan 14, 2026
956f1ac
Bumped versionCode
Jan 16, 2026
80bd826
Updated README link
Jan 16, 2026
9a59fac
Store Icons added to the list, capsule and hero items. (#419)
phobos665 Jan 16, 2026
2e20068
GOG Kotlin Migration - Game Management and Downloads (#418)
phobos665 Jan 18, 2026
e690f56
Updated drm handling so every exe does not need to be unpacked (#420)
utkarshdalal Jan 19, 2026
a5ed4dd
Added Romenian translation by MXXME, fixed one mssing string in Itali…
Ashnar2602 Jan 19, 2026
e653f67
Merge branch 'master' into feat/ui-ux-overhaul
Jan 19, 2026
f71c2cb
Fixed showing GOG in local tab
Jan 19, 2026
ce8d53e
Merge branch 'master' into feat/ui-ux-overhaul-utkarsh-2
Jan 19, 2026
8fd43b2
Game page opens, games don't launch
Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/pluvia-pr-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,23 @@ jobs:
java-version: '17'
distribution: 'temurin'
- name: Inject credentials
if: github.event.pull_request.head.repo.full_name == github.repository
run: |
cat <<EOF > local.properties
POSTHOG_API_KEY=${{ secrets.POSTHOG_API_KEY }}
POSTHOG_HOST=${{ secrets.POSTHOG_HOST }}
SUPABASE_URL=${{ secrets.SUPABASE_URL }}
SUPABASE_KEY=${{ secrets.SUPABASE_KEY }}
EOF
- name: Inject dummy credentials
if: github.event.pull_request.head.repo.full_name != github.repository
run: |
cat <<EOF > local.properties
POSTHOG_API_KEY=dummy
POSTHOG_HOST=https://us.i.posthog.com
SUPABASE_URL=https://dummy.supabase.co
SUPABASE_KEY=dummy
EOF
- name: Validate Gradle wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This is a fork of [Pluvia](https://github.com/oxters168/Pluvia), a Steam client
## How to Use

(Note that GameNative is still in its early stages, and all games may not work, or may require tweaking to get working well)
1. Download the latest release [here](https://github.com/utkarshdalal/GameNative/releases/download/v0.6.0/gamenative-v0.6.0.apk)
1. Download the latest release [here](https://github.com/utkarshdalal/GameNative/releases/download/v0.7.0/gamenative-v0.7.0.apk)
2. Install the APK on your Android device
3. Login to your Steam account
4. Install your game
Expand Down
58 changes: 37 additions & 21 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ plugins {
alias(libs.plugins.kotlinter)
alias(libs.plugins.ksp)
alias(libs.plugins.secrets.gradle)
alias(libs.plugins.room)
}

val keystorePropertiesFile = rootProject.file("app/keystores/keystore.properties")
Expand All @@ -27,6 +28,10 @@ val posthogHost: String = project.findProperty("POSTHOG_HOST") as String? ?: Sys
val supabaseUrl: String = project.findProperty("SUPABASE_URL") as String? ?: System.getenv("SUPABASE_URL") ?: "https://your-project.supabase.co"
val supabaseKey: String = project.findProperty("SUPABASE_KEY") as String? ?: System.getenv("SUPABASE_KEY") ?: ""

room {
schemaDirectory("$projectDir/schemas")
}

android {
namespace = "app.gamenative"
compileSdk = 35
Expand All @@ -51,8 +56,8 @@ android {
minSdk = 26
targetSdk = 28

versionCode = 7
versionName = "0.6.0"
versionCode = 9
versionName = "0.7.0"

buildConfigField("boolean", "GOLD", "false")
fun secret(name: String) =
Expand Down Expand Up @@ -81,8 +86,13 @@ android {
"en", // English (default)
"da", // Danish
"pt-rBR", // Portuguese (Brazilian)
"zh-rTW", // Traditional Chinese
"zh-rCN", // Simplified Chinese
"zh-rTW", // Traditional Chinese
"zh-rCN", // Simplified Chinese
"fr", // French
"de", // German
"uk", // Ukrainian
"it", // Italian
"ro", // Română
// TODO: Add more languages here using the ISO 639-1 locale code with regional qualifiers (e.g., "pt-rPT" for European Portuguese)
)

Expand Down Expand Up @@ -146,16 +156,12 @@ android {
buildConfig = true
}

ksp {
arg("room.schemaLocation", "$projectDir/schemas")
arg("room.incremental", "true")
}

packaging {
resources {
excludes += "/DebugProbesKt.bin"
excludes += "/junit/runner/smalllogo.gif"
excludes += "/junit/runner/logo.gif"
excludes += "/META-INF/versions/9/OSGI-INF/MANIFEST.MF"
}
jniLibs {
// 'extractNativeLibs' was not enough to keep the jniLibs and
Expand All @@ -175,12 +181,12 @@ android {
}

// build extras needed in libwinlator_bionic.so
// externalNativeBuild {
// cmake {
// path = file("src/main/cpp/extras/CMakeLists.txt") // the file shown above
// version = "3.22.1"
// }
// }
// externalNativeBuild {
// cmake {
// path = file("src/main/cpp/extras/CMakeLists.txt") // the file shown above
// version = "3.22.1"
// }
// }

// cmake on release builds a proot that fails to process ld-2.31.so
// externalNativeBuild {
Expand All @@ -200,18 +206,23 @@ android {

dependencies {
implementation(libs.material)

// Chrome Custom Tabs for GOG OAuth
implementation("androidx.browser:browser:1.8.0")

// JavaSteam
val localBuild = false // Change to 'true' needed when building JavaSteam manually
if (localBuild) {
implementation(files("../../JavaSteam/build/libs/javasteam-1.8.0-SNAPSHOT.jar"))
implementation(files("../../JavaSteam/javasteam-depotdownloader/build/libs/javasteam-depotdownloader-1.8.0-SNAPSHOT.jar"))
implementation(libs.bundles.steamkit.dev)
implementation(files("../../JavaSteam/build/libs/javasteam-1.8.0-6-SNAPSHOT.jar"))
implementation(files("../../JavaSteam/javasteam-depotdownloader/build/libs/javasteam-depotdownloader-1.8.0-6-SNAPSHOT.jar"))
implementation(libs.bundles.javasteam.dev)
} else {
implementation(libs.steamkit) {
implementation(libs.javasteam) {
isChanging = version?.contains("SNAPSHOT") ?: false
}
implementation(libs.javasteam.depotdownloader) {
isChanging = version?.contains("SNAPSHOT") ?: false
}
implementation("io.github.utkarshdalal:javasteam-depotdownloader:1.8.0-SNAPSHOT")
// implementation("in.dragonbra:javasteam-depotdownloader:1.8.0-SNAPSHOT")
}
implementation(libs.spongycastle)

Expand Down Expand Up @@ -265,8 +276,11 @@ dependencies {
testImplementation(libs.robolectric)
testImplementation(libs.mockito.core)
testImplementation(libs.mockito.kotlin)
testImplementation(libs.mockk)
testImplementation(libs.androidx.ui.test.junit4)
testImplementation(libs.zstd.jni)
testImplementation(libs.orgJson)
testImplementation(libs.mockwebserver)

// Add PostHog Android SDK dependency
implementation("com.posthog:posthog-android:3.8.0")
Expand All @@ -279,4 +293,6 @@ dependencies {
implementation("io.github.jan-tennert.supabase:realtime-kt")

implementation("io.ktor:ktor-client-android:3.1.3")

implementation("com.auth0.android:jwtdecode:2.0.2")
}
Loading