Skip to content

Releases: Neotica/ModernADB

Release v0.0.6.2

22 Aug 05:00

Choose a tag to compare

Added pairing options, a lots of stuff. Then added rpm build for more linux target.

Release v0.0.6

12 Jul 01:47

Choose a tag to compare

Release v0.0.5

07 Jul 13:31

Choose a tag to compare

Refactor: Improve Device Handling and UI Elements

This commit introduces several enhancements to device interaction and user interface elements:

**Device Handling:**
- **Device Selection:** Users can now see a list of connected devices and select a specific device for ADB commands. The selected device is stored in `AdbInput.selectedDevice`.
- **`getDeviceList()`:** A new function in `AdbInput.kt` to retrieve a list of connected device serial numbers.
- **`DeviceListView` Updates:**
    - Displays the list of connected devices.
    - Allows users to select a device by clicking on its serial number.
    - Shows "(Selected)" next to the currently active device.
    - Includes a refresh button to update the device list.
    - Shows a toast message if no devices are found or when a device serial is long-pressed.
- **Command Execution:** ADB commands are now executed specifically on the selected device using `adb -s <selectedDevice> ...`.

**UI Enhancements:**
- **Toast Notifications:** Introduced a `ToastManager` to display short or long duration toast messages. This is used for notifying users about device connection status.
- **Icon Resources:** Added `ic_expand_less.svg`, `ic_expand_more.svg`, and `ic_power.svg` for UI elements.
- **`NeoIcon` Component:** The `size` parameter is now available to customize icon dimensions.
- **`AndroidNavigationView`:** Increased the size of navigation icons (Back, Home, Recent App) to `48.dp`.
- **`ControlsView`:**
    - Replaced the "Power Button" text button with a `NeoIcon` using `ic_power.svg`.
    - Added dropdown menus for selecting the target device (e.g., "Pixel 6", "Pixel 3") and the unlock method (e.g., "Password", "Pin") for the unlock functionality.
    - The unlock functionality now considers the selected device and unlock method.
- **`MainView`:**
    - Added an overlay that appears if no device is connected, prompting the user to connect a device. Clicking this overlay shows a toast message.
- **Input Handling:** Removed an unnecessary `AdbInput.sendEnter()` call after `AdbInput.sendText()` in `ADBTerminalInputs.kt` for "write" commands.

**Code Structure:**
- **`ToastDurationType.kt`:** New enum to define toast duration types (SHORT, LONG).
- **`setComposeWindowProvider`:** Added a function to provide the `ComposeWindow` instance to `ToastManager`.

These changes aim to provide a more user-friendly experience by clearly indicating connected devices, allowing selection, and offering more specific control options.

Release v0.0.4

06 Jul 11:41

Choose a tag to compare

Refactor: Improve UI and introduce NeoIcon component

This commit introduces several UI enhancements and refactors parts of the application:

**New Features & Enhancements:**

- **`NeoIcon` Composable:** A new reusable composable `NeoIcon` is introduced for displaying icons with tooltips. This is now used for navigation buttons (Back, Home, Recent) and the "Reload" devices button.
- **Enhanced `AndroidNavigationView`:**
    - Now uses `NeoIcon` for navigation controls.
    - Includes an expandable section with two modes:
        - **Keys Mode:** Provides "Up", "Down", "Left", "Right" arrow key functionality.
        - **Swipe Mode:** Provides "Swipe Up", "Swipe Down", "Swipe Left", "Swipe Right" functionality.
    - A Switch is used to toggle between "Keys" and "Swipe" modes.
- **Improved Device List Refresh:** The "Reload" button in `DeviceListView` now uses `NeoIcon` and directly calls `AdbInput.deviceList()`.
- **Unlock with Enter Key:** In `ControlsView`, the device can now be unlocked by pressing Enter in the password field.
- **New Icons:** Added SVG icons for reload, navigation back, home, and recent.

**Refactoring & Code Changes:**

- **`MainView` Layout Adjustments:** The layout logic in `MainView` has been updated to better adapt to different screen widths (`< 550.dp`, `< 840.dp`, and wider).
- **`AdbInput` Enhancements:**
    - `deviceList()` now returns the combined output of STDOUT and STDERR.
    - New functions `forceClose()`, `swipeUp()`, and `swipeDown()` added for convenience.
- **`ADBTerminalInputs` Updates:**
    - "fc" (force close) now uses `AdbInput.forceClose()`.
    - "sdown" and "sup" (swipe down/up) now use the new `AdbInput.swipeDown()` and `AdbInput.swipeUp()` methods.
- **`CommandView` & `ControlsView` Modifiers:** These composables now accept a `Modifier` parameter for better layout flexibility.
- **Removed Version Text:** The version text in `AboutView` has been commented out.
- **`ScreenSize` Sealed Class:** A new sealed class `ScreenSize` (Compact, Medium, Large) was added but is not yet utilized.

**Overall, these changes improve the user interface, add new control functionalities, and make the codebase more modular and maintainable.**

Release v0.0.3

05 Jul 16:36

Choose a tag to compare

Refactor: Enhance ADB command execution and integrate Moko Resources

This commit significantly refactors the ADB command execution logic for better reliability and introduces Moko Resources for multiplatform resource management.

**ADB Execution Enhancements:**
- The `AdbInput.kt` has been updated to use a more robust `exec` function. This function:
    - Dynamically locates the ADB executable in common SDK paths.
    - Uses the system shell (`cmd.exe /c` on Windows, `sh -c` on others) to correctly handle commands with pipes.
    - Sets the `HOME` and `ANDROID_SDK_HOME` environment variables for the process.
    - Includes improved error handling and debugging output for command execution.
    - Waits for the process to finish with a timeout.
- The `deviceList` function in `AdbInput.kt` now returns a String containing both STDOUT and STDERR of the `adb devices` command.
- The `isAwake` and `unlock` functions in `AdbInput.kt` have been updated with improved error handling around stream reading.

**Moko Resources Integration:**
- Added the Moko Resources plugin (`dev.icerock.mobile.multiplatform-resources`) and its dependencies (`moko-resources`, `moko-resources-compose`) to `composeApp/build.gradle.kts` and `gradle/libs.versions.toml`.
- Configured Moko Resources in `composeApp/build.gradle.kts` with `resourcesPackage.set("id.neotica.modernADB.res")`.
- Removed direct resource imports from `modernadb.composeapp.generated.resources` in `App.kt` in preparation for using Moko Resources.

**Other Changes:**
- `composeApp/build.gradle.kts`: Added logic to include platform-specific ADB tools from `src/desktopMain/composeResources/platform-tools` into the native package.
- `ADBTerminalInputs.kt`: Adjusted the `devices` case to reflect the change in `AdbInput.deviceList()` return type.

Release v0.0.2.1

05 Jul 12:00

Choose a tag to compare

CI: Add GitHub Actions workflow for building desktop app

This commit introduces a GitHub Actions workflow to automate the build process for the ModernADB desktop application.

The workflow will:
- Trigger on push and pull request events to the `main` and `cicd` branches.
- Build the application on `ubuntu-latest`, `windows-latest`, and `macos-latest` runners.
- Set up JDK 21 and Gradle.
- Execute the `./gradlew packageRelease` command to build the native distribution.
- Upload the resulting binaries as artifacts, named `ModernADB-${{ matrix.os }}`.

Additionally, this commit:
- Adds RPM as a target format in `composeApp/build.gradle.kts`.
- Introduces a new Gradle task `packageAll` that depends on `packageMsi`, `packageDmg`, `packageDeb`, and `packageRpm` to build all native distribution packages.