Skip to content

feat: Executable Path dropdown — PICS launch entries, .bat/.cmd, URI schemes#1459

Open
playday3008 wants to merge 11 commits into
utkarshdalal:masterfrom
playday3008:feat/executable-path-dropdown-enhancement
Open

feat: Executable Path dropdown — PICS launch entries, .bat/.cmd, URI schemes#1459
playday3008 wants to merge 11 commits into
utkarshdalal:masterfrom
playday3008:feat/executable-path-dropdown-enhancement

Conversation

@playday3008
Copy link
Copy Markdown

@playday3008 playday3008 commented May 20, 2026

Description

  • Show Steam PICS launch options in the Executable Path dropdown, auto-defaulting to the first entry
  • Support .bat/.cmd files and URI schemes (link2ea://, etc.) in dropdown, scanner, and launch pipeline
  • Parse PICS arguments field into LaunchInfo (no Room migration needed)
  • Remove Portal LaunchArgFix — PICS already provides -game portal

Recording

Screen_Recording_20260520_111009_GameNative_1.mp4

Type of Change

  • Bug fix
  • Performance / stability improvement
  • Compatibility improvements
  • Other (requires prior approval)

Checklist

  • If I have access to #code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed.
  • This change aligns with the current project scope (core functionality, stability, or performance). If not, it has been explicitly approved beforehand.
  • I have attached a recording of the change.
  • I have read and agree to the contribution guidelines in CONTRIBUTING.md.

Summary by cubic

Adds Steam PICS launch options to the Executable Path dropdown and supports .bat/.cmd files and URI schemes end-to-end. Improves default selection, argument handling, quoting, and reliable launch behavior for Steam and non-Steam titles.

  • New Features

    • Executable Path dropdown shows Steam PICS launch entries, auto-defaults to the default (or first) entry, and fills exec args on selection; now also defaults when execArgs is empty.
    • End-to-end support for .bat/.cmd and URI schemes across dropdown, scanner, PICS filter, and launch pipeline (use cmd /c call for batch, start /WAIT for URIs, URI-safe quoting, skip fullscreen WM class for URIs).
    • Parse PICS arguments into LaunchInfo (defaults to empty) to launch with correct flags.
    • A: drive scanner includes .bat/.cmd and ranks .exe above scripts.
    • Removed Portal LaunchArgFix (PICS already provides -game portal).
  • Bug Fixes

    • Guard auto-defaulting to avoid overwriting existing selections; fix quoting for URI launches; use start /WAIT for URIs; invoke batch scripts via cmd /c call to handle paths with spaces.

Written for commit d22a1de. Summary will update on new commits. Review in cubic

Summary by CodeRabbit

  • New Features

    • Support for launching via batch scripts (.bat, .cmd) and URI schemes; Steam-provided launch options are shown (with arguments) and selectable in the executable dropdown.
    • Dialogs now accept and propagate an optional Steam App ID; missing launch arguments now default to empty.
  • Bug Fixes

    • Removed a legacy Steam game fix that could interfere with launches.
  • Tests

    • Added tests for executable detection/scanning and launch-info serialization.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

LaunchInfo adds an arguments field; Steam launch info integrates with container executable discovery (including .bat/.cmd and URI schemes), the ExecutablePathDropdown is refactored to merge Steam entries and scanned executables, XServer launch commands branch by executable type, and STEAM_Fix_400 is removed.

Changes

Steam Launch Integration with Container Executables

Layer / File(s) Summary
Data model foundation
app/src/main/java/app/gamenative/data/LaunchInfo.kt, app/src/main/java/app/gamenative/utils/KeyValueUtils.kt, app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt
LaunchInfo adds arguments: String = ""; KeyValueUtils.generateSteamApp() sets it from manifest; tests verify serialization defaults and round-trips.
Service baseline and executable classification
app/src/main/java/app/gamenative/service/SteamService.kt, app/src/main/java/app/gamenative/utils/ContainerUtils.kt, app/src/test/java/app/gamenative/utils/ContainerUtilsExecutableTest.kt
getWindowsLaunchInfos() now accepts .exe, .bat, .cmd, and URI-scheme entries; ContainerUtils adds isUriScheme() and isBatchScript() with unit tests.
Container executable discovery and ranking
app/src/main/java/app/gamenative/utils/ContainerUtils.kt, app/src/test/java/app/gamenative/utils/ContainerUtilsExecutableTest.kt
A: drive scanning includes .bat/.cmd; priority scoring slightly down-ranks batch scripts versus .exe; tests assert inclusion and ordering.
Dialog state and configuration
app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigState.kt, app/src/main/java/app/gamenative/ui/PluviaMain.kt
Add steamAppId to ContainerConfigState; PluviaMain computes and passes steamAppId into ContainerConfigDialog when appropriate.
Executable dropdown refactoring
app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt
ExecutablePathDropdown now accepts containerData and steamAppId, loads Steam LaunchInfo pics and scanned executables, auto-selects Steam entries when applicable, renders both lists (with divider), and emits selections via onLaunchOptionSelected(executablePath, execArgs?); text input is read-only.
Dialog wiring and entry points
app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt, app/src/main/java/app/gamenative/ui/screen/library/appscreen/BaseAppScreen.kt
GeneralTab uses onLaunchOptionSelected to set executablePath and execArgs; BaseAppScreen supplies steamAppId for Steam-sourced items.
Launch command generation for special executables
app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
URI-scheme executables bypass basename matching and skip WM class forcing; getWineStartCommand/get DRM launch paths branch: URI → start command, batch → cmd call, otherwise quoted path.

Game Fix Cleanup

Layer / File(s) Summary
Remove STEAM_Fix_400 from registry
app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt
STEAM_Fix_400 entry removed from the fixes list initialization.

Sequence Diagram

sequenceDiagram
  participant UI as ContainerConfigDialog
  participant SteamSvc as SteamService
  participant ContainerUtils as ContainerUtils
  participant XServer as XServerScreen
  UI->>SteamSvc: request window launch pics (steamAppId)
  SteamSvc->>UI: return LaunchInfo(executable, arguments)
  UI->>ContainerUtils: scan A: drive executables
  ContainerUtils->>UI: return scanned executables (.exe/.bat/.cmd)
  UI->>XServer: launch selection (executablePath, execArgs)
  XServer->>XServer: build command by type (URI / batch / exe)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 I nibble args from Steam's soft chest,

batch scripts hop and URI links rest,
dropdowns hum choices, read-only and neat,
commands now branch so launches meet,
STEAM_Fix_400 hops off to sleep.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 19.35% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description covers the main features and changes well, but misses the code-changes discussion requirement. Clarify whether code-changes channel discussion occurred (checkbox is unchecked), or confirm explicit approval was obtained through another communication channel.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: adding PICS launch entries, .bat/.cmd support, and URI scheme support to the Executable Path dropdown.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Review ran into problems

🔥 Problems

Stopped waiting for pipeline failures after 30000ms. One of your pipelines takes longer than our 30000ms fetch window to run, so review may not consider pipeline-failure results for inline comments if any failures occurred after the fetch window. Increase the timeout if you want to wait longer or run a @coderabbit review after the pipeline has finished.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@playday3008 playday3008 marked this pull request as ready for review May 20, 2026 09:18
@playday3008 playday3008 requested a review from utkarshdalal as a code owner May 20, 2026 09:18
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/debug-build.yml:
- Around line 43-45: Replace the fragile sed-based injection of
applicationIdSuffix into app/build.gradle.kts with a Gradle property approach:
stop using the sed line that edits the debug block and instead pass the suffix
via the Gradle CLI (e.g., ./gradlew -PapplicationIdSuffix=.dev) or configure a
project property that the build script reads (reference applicationIdSuffix in
build.gradle.kts); additionally add a verification step after the build script
invocation that checks app/build.gradle.kts or the resulting APK/manifest for
the applied applicationIdSuffix (e.g., grep for 'applicationIdSuffix = ".dev"'
and exit non-zero if not found) so failures are detected instead of silently
ignored.
- Around line 50-54: Sanitize the branch name before using it in the artifact
name to avoid invalid characters: add a step (e.g., id: sanitize) that reads
inputs.branch, replaces any characters not matching [A-Za-z0-9._-] with a safe
character (e.g., '-') and writes the result to GITHUB_OUTPUT as branch_name,
then change the Upload debug APK step (uses: actions/upload-artifact@v4) to use
name: app-debug-${{ steps.sanitize.outputs.branch_name }} instead of directly
using inputs.branch.
- Around line 17-19: The checkout step using actions/checkout@v4 currently
leaves the GITHUB_TOKEN persisted in the workspace; update the checkout step
(the actions/checkout@v4 usage) to explicitly set persist-credentials: false so
the token is not written to the workspace or available to subsequent steps,
ensuring credential persistence is disabled while still passing the intended ref
input.

In
`@app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt`:
- Around line 1265-1267: The code currently auto-selects the default PICS entry
when pics.isNotEmpty() && containerData.execArgs.isEmpty(), which wrongly treats
empty execArgs as "no prior selection" and can overwrite a valid saved choice
that simply has no arguments; change the guard to detect absence of a saved
executable instead (e.g., check containerData.execExecutable/isBlank or a
dedicated selected flag) so that onLaunchOptionSelected(defaultEntry.executable,
defaultEntry.arguments) is only called when there truly is no saved selection,
leaving an explicitly chosen executable with empty arguments untouched.

In `@app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt`:
- Around line 262-266: The current onLaunchOptionSelected handler retains
previous Steam-only execArgs when args is null; update the assignment in the
state.config.value = config.copy(...) call so that execArgs is cleared when args
is null (e.g., execArgs = args ?: "" or null depending on downstream
expectations) instead of using config.execArgs, referencing
onLaunchOptionSelected, state.config, config.copy, executablePath and execArgs
to locate the change.

In `@app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt`:
- Around line 3727-3731: The URI branch in the when that builds the command for
executablePath (ContainerUtils.isUriScheme(executablePath)) currently emits
unquoted "start $executablePath" and uses workingDir computed via
executablePath.substringBeforeLast("/"), producing invalid commands and paths
for URIs; change the when branch to produce a wrapped Windows start invocation
like cmd /c start "" "<executablePath>" (ensuring the URI is quoted) and ensure
workingDir is chosen from the app/game base directory instead of
substringBeforeLast("/"); move the workingDir computation after the URI check
(or special-case it) so ContainerUtils.isUriScheme(executablePath) returns a
valid workingDir (e.g., app/game base) and apply the same fix in the other
occurrence referenced (around the second when at the later lines).

In `@app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt`:
- Around line 5-6: The test fails to compile because
kotlinx.serialization.decodeFromString is not imported; add the missing import
for kotlinx.serialization.decodeFromString so calls like
json.decodeFromString<LaunchInfo>(...) in LaunchInfoSerializationTest (used at
the decode sites) resolve correctly; update the import list alongside
encodeToString and Json to include decodeFromString.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 98a4ed51-8a5f-4286-8b88-1fbda414bfb8

📥 Commits

Reviewing files that changed from the base of the PR and between 5cacc3b and 364ddf5.

📒 Files selected for processing (15)
  • .github/workflows/debug-build.yml
  • app/src/main/java/app/gamenative/data/LaunchInfo.kt
  • app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt
  • app/src/main/java/app/gamenative/gamefixes/STEAM_400.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/component/dialog/ContainerConfigDialog.kt
  • app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigState.kt
  • app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt
  • app/src/main/java/app/gamenative/ui/screen/library/appscreen/BaseAppScreen.kt
  • app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
  • app/src/main/java/app/gamenative/utils/ContainerUtils.kt
  • app/src/main/java/app/gamenative/utils/KeyValueUtils.kt
  • app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt
  • app/src/test/java/app/gamenative/utils/ContainerUtilsExecutableTest.kt
💤 Files with no reviewable changes (2)
  • app/src/main/java/app/gamenative/gamefixes/STEAM_400.kt
  • app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt

Comment thread .github/workflows/debug-build.yml Outdated
Comment thread .github/workflows/debug-build.yml Outdated
Comment thread .github/workflows/debug-build.yml Outdated
Comment thread app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt Outdated
Comment thread app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt
Comment thread app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
@playday3008 playday3008 force-pushed the feat/executable-path-dropdown-enhancement branch from 364ddf5 to cb37b72 Compare May 20, 2026 09:31
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 issues found across 15 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt Outdated
Comment thread app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt
Comment thread .github/workflows/debug-build.yml Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt (1)

5-6: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Missing decodeFromString import breaks test compilation.

Line 28 (and Lines 49, 68, 86) uses json.decodeFromString<LaunchInfo>(...) without importing kotlinx.serialization.decodeFromString.

Proposed fix
 import app.gamenative.enums.OS
 import app.gamenative.enums.OSArch
+import kotlinx.serialization.decodeFromString
 import kotlinx.serialization.encodeToString
 import kotlinx.serialization.json.Json
#!/bin/bash
# Verify callsites exist and import is missing/present
rg -n 'decodeFromString<LaunchInfo>\(' app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt
rg -n 'import kotlinx\.serialization\.decodeFromString' app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt

Also applies to: 28-28, 49-49, 68-68, 86-86

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt` around
lines 5 - 6, The test uses Json.decodeFromString in LaunchInfoSerializationTest
but the import for kotlinx.serialization.decodeFromString is missing; add the
top-level import kotlinx.serialization.decodeFromString to the test file (same
place where kotlinx.serialization.encodeToString and
kotlinx.serialization.json.Json are imported) so calls like
json.decodeFromString<LaunchInfo>(...) at the usages in
LaunchInfoSerializationTest compile.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt`:
- Around line 1242-1245: The launch-path input was made read-only and its
onValueChange removed, removing users' ability to manually enter an
executable/URI; restore a manual override by making the launch path TextField
editable again and wiring its onValueChange to update local state, while still
keeping scanning/PICS suggestions and the existing onLaunchOptionSelected flow
in ContainerConfigDialog so users can type or paste an .exe, script, or URI when
detection misses a valid entry (look for the TextField or state holding the
launch path in ContainerConfigDialog and re-enable its setter/update callback).

---

Duplicate comments:
In `@app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt`:
- Around line 5-6: The test uses Json.decodeFromString in
LaunchInfoSerializationTest but the import for
kotlinx.serialization.decodeFromString is missing; add the top-level import
kotlinx.serialization.decodeFromString to the test file (same place where
kotlinx.serialization.encodeToString and kotlinx.serialization.json.Json are
imported) so calls like json.decodeFromString<LaunchInfo>(...) at the usages in
LaunchInfoSerializationTest compile.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7a1a63c3-1151-46d7-947b-de415459b08c

📥 Commits

Reviewing files that changed from the base of the PR and between 364ddf5 and cb37b72.

📒 Files selected for processing (14)
  • app/src/main/java/app/gamenative/data/LaunchInfo.kt
  • app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt
  • app/src/main/java/app/gamenative/gamefixes/STEAM_400.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/component/dialog/ContainerConfigDialog.kt
  • app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigState.kt
  • app/src/main/java/app/gamenative/ui/component/dialog/GeneralTab.kt
  • app/src/main/java/app/gamenative/ui/screen/library/appscreen/BaseAppScreen.kt
  • app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
  • app/src/main/java/app/gamenative/utils/ContainerUtils.kt
  • app/src/main/java/app/gamenative/utils/KeyValueUtils.kt
  • app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt
  • app/src/test/java/app/gamenative/utils/ContainerUtilsExecutableTest.kt
💤 Files with no reviewable changes (2)
  • app/src/main/java/app/gamenative/gamefixes/STEAM_400.kt
  • app/src/main/java/app/gamenative/gamefixes/GameFixesRegistry.kt

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt`:
- Around line 3731-3734: The URI branch builds a detached Windows START command
causing premature termination; update the
ContainerUtils.isUriScheme(executablePath) branch to use a synchronous START
(add the /WAIT flag) so the guest launcher waits for the protocol handler to
exit, and apply the same fix to the other identical branch around the 3789–3792
region; ensure the code paths constructing the command string for
executablePath/normalizedPath use "cmd /c start /WAIT" instead of "cmd /c start"
so startExitWatchForUnmappedGameWindow() and gameTerminationCallback see the
real lifecycle.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: da252f27-05a5-4dd2-be69-721f7765513d

📥 Commits

Reviewing files that changed from the base of the PR and between cb37b72 and f4caa02.

📒 Files selected for processing (4)
  • app/src/main/java/app/gamenative/ui/component/dialog/ContainerConfigDialog.kt
  • app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
  • app/src/test/java/app/gamenative/data/LaunchInfoSerializationTest.kt
  • app/src/test/java/app/gamenative/utils/ContainerUtilsExecutableTest.kt

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt`:
- Around line 3731-3734: Batch-script launches built in the when-branch (using
ContainerUtils.isBatchScript and the produced string for
executablePath/normalizedPath) break when container.execArgs is appended because
cmd /c "script.bat" <args> misparses paths; change the batch-script branch to
invoke the script via cmd /c call so the command becomes cmd /c call
"A:\${normalizedPath}" (or equivalent with proper quoting around the script
path) to preserve spaces/special characters and ensure correct batch-file
context when container.execArgs is appended. Ensure the same fix is applied to
the other occurrence around lines 3789-3792.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b6ceb83e-70c8-4a0f-b0e3-054b80f87910

📥 Commits

Reviewing files that changed from the base of the PR and between f4caa02 and 715866c.

📒 Files selected for processing (1)
  • app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt

Comment thread app/src/main/java/app/gamenative/ui/screen/xserver/XServerScreen.kt
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.

1 participant