Skip to content

Improvements & fixes - #26

Merged
SaicharanKandukuri merged 6 commits into
mainfrom
feat/android-storage-mounts
Sep 18, 2026
Merged

SaicharanKandukuri merged 6 commits into
mainfrom
feat/android-storage-mounts

Conversation

@SaicharanKandukuri

@SaicharanKandukuri SaicharanKandukuri commented Sep 16, 2026

Copy link
Copy Markdown
Member
  • Add internal shared storage mounts in Linux system file access when configuring a stopped system.
  • Show shutdown progress in Linux system management while stopping an active terminal.
  • Restore stable X11 presentation in Desktop when running composited environments.
  • Align native libraries in the Android APK for devices using 16 KB memory pages.
  • Preserve font size in Terminal when its view is reopened.

Fixes #15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Two moderate success-feedback rendering issues remain, along with a storage discovery and permission coverage gap.

Pull request overview

Adds Android storage discovery and permission handling for PRoot mount profiles, supports duplicate destinations, and improves terminal-stop progress feedback.

Changes:

  • Discovers internal, removable, and USB storage with hot-plug refresh.
  • Adds selected volumes to editable mount profiles.
  • Allows ordered duplicate destinations.
  • Declares storage permissions and shows terminal stopping progress.
File summaries
File Summary
app/src/test/java/org/randomcoder/udroid/runtime/ProotMountProfilesTest.kt Tests duplicate mount destinations.
app/src/test/java/org/randomcoder/udroid/runtime/AndroidStorageMountsTest.kt Tests storage target generation.
app/src/main/java/org/randomcoder/udroid/ui/ProotMountProfilesPage.kt Adds storage selection UI. Moderate issue: successful additions are rendered with the error color.
app/src/main/java/org/randomcoder/udroid/ui/ProotMountProfileDialog.kt Adds storage selection to profile dialogs. Moderate issue: successful additions are rendered with the error color.
app/src/main/java/org/randomcoder/udroid/ui/LinuxSystemPage.kt Shows terminal stopping progress.
app/src/main/java/org/randomcoder/udroid/runtime/ProotMountProfiles.kt Allows ordered duplicate destinations.
app/src/main/java/org/randomcoder/udroid/runtime/AndroidStorageMounts.kt Handles storage discovery, permissions, and guest path mapping. Nit: add coverage for discovery paths and permission results.
app/src/main/AndroidManifest.xml Declares storage permissions.
Review details

Suppressed comments (3)

app/src/main/java/org/randomcoder/udroid/runtime/AndroidStorageMounts.kt:34

  • The new discovery and permission branches are only exercised indirectly by the UI; the added unit test covers guestTarget only. Please add platform/unit coverage for StorageManager.storageVolumes enumeration (including mounted and unavailable directories), the API 30+ versus legacy discovery paths, and both permission-result branches, since regressions here can silently hide storage or leave the add controls in the wrong state.
    fun discover(context: Context): List<AndroidStorageVolume> {
        val manager = context.getSystemService(StorageManager::class.java)
        val volumes = manager.storageVolumes
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            return volumes.mapNotNull { volume ->

app/src/main/java/org/randomcoder/udroid/ui/ProotMountProfileDialog.kt:157

  • validationMessage is rendered with MaterialTheme.colorScheme.error below, so this success confirmation makes every storage-volume addition appear as a validation failure in the dialog. Keep success feedback separate from validation errors or render this confirmation with a success color.
                    onAdd = { mount ->
                        draft = draft.copy(customMounts = draft.customMounts + mount)
                        validationMessage =
                            "${mount.hostSource} will be available at ${mount.guestTarget}"
                    },
                    onMessage = { validationMessage = it },

app/src/main/java/org/randomcoder/udroid/ui/ProotMountProfilesPage.kt:620

  • This stores a successful add confirmation in message, but the editor renders every message that is not prefixed with Configuration saved using the error color (lines 707-716). Adding an Android volume is therefore shown as a failure even though the mapping was added; keep success feedback separate from validation/error messages or update that rendering branch.
                onAdd = { mount ->
                    draft = draft.copy(customMounts = draft.customMounts + mount)
                    message = "${mount.hostSource} will be available at ${mount.guestTarget}"
                },
  • Files reviewed: 8/8 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@SaicharanKandukuri SaicharanKandukuri changed the title feat: add Android storage mount management Improvements & fixes Sep 18, 2026
@SaicharanKandukuri
SaicharanKandukuri marked this pull request as ready for review September 18, 2026 06:19
@SaicharanKandukuri
SaicharanKandukuri merged commit 7ce1e16 into main Sep 18, 2026
2 checks passed
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.

Font size keeps resetting

2 participants