Releases: Neotica/ModernADB
Releases · Neotica/ModernADB
Release v0.0.6.2
Added pairing options, a lots of stuff. Then added rpm build for more linux target.
Release v0.0.6
Full Changelog: v0.0.5.2...v0.0.6
Release v0.0.5
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
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
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
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.