Skip to content

Releases

Dolphy 1.5.2

Choose a tag to compare

@github-actions github-actions released this 05 Nov 20:25

Dolphy 1.5.2 gives plugins access to the Wi-Fi networks a device has already joined, so Wi-Fi Wordlist Lab can build wordlists from real credentials instead of synthetic ones. The release also completes the lab's Arabic, English and Russian metadata and fixes the root daemon's foreground notification on Android 9 and older. Catalog formats, the plugin API and user data are unchanged.

Added

  • Saved Wi-Fi password bridge. api.getDevice().wifiSavedPasswordsJson() for Python plugins and api.getDevice().wifi.savedPasswords(callback) for JavaScript plugins return {ok, source, count, networks[{ssid, password, security}]}. The call requires the wifi capability plus root or a granted Shizuku shell.
  • SavedWifiCredentials reader. Probes the Android 11+ Wi-Fi APEX store and the legacy /data/misc/wifi path, parses WifiConfigStore.xml, unescapes XML entities and skips open or enterprise networks that carry no pre-shared key.
  • Parser test coverage. SavedWifiCredentialsTest covers the current and legacy store layouts, entity escaping, password-less networks and the dump command.

Fixed

  • Foreground service on Android 9 and older. RootdService passed a foregroundServiceType to startForeground unconditionally, which throws before API 29. The type is now only passed on Android 10 and newer.
  • Localized password count. The count string used two bare %d placeholders, so the Arabic and Russian translations could not format it. Both are now positional (%1$d, %2$d).

Changed

  • Wi-Fi Wordlist Lab 3.1.1. The bundled plugin adds the missing module title, module subtitle and settings subtitles in all three languages, and reads saved network passwords through the new bridge.
  • Version. versionName 1.5.2, versionCode 30502.

Upgrade notes

  • Devices running 1.5.1 can update in place with the release-signed APK. No plugin reinstall, settings migration or backup change is needed.
  • Reading saved passwords requires root or a granted Shizuku shell. Without either, the bridge returns {ok: false, error: "no_root"} and the plugin keeps working from its generated wordlists.

Verification

  • Android CI — unit tests for app, core:model, core:hal, core:security, rootd and bridge:flipper, plus assembleDebug, detekt and lintVitalRelease — passed on e6b9745.
  • Security — gitleaks secret scan — passed on e6b9745.
  • Release — signed APK built and its signature verified in CI.
  • Asset — Dolphy-1.5.2.apk, 71,575,839 bytes, SHA-256 477fc5bc32f3d0e755ca31f1c3f671761c8069cd0b2f8c02e682beff3573c7f5.

Full changelog: v1.5.1...v1.5.2

Dolphy 1.5.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 21:43

Dolphy 1.5.1 is a BadUSB Studio maintenance release. It adds one-tap HID setup
actions to the plugin, so a host can be paired over Bluetooth or prepared over
USB without leaving the payload screen, and it corrects the transport reporting
and catalog section that made previous builds misleading. Catalog formats, the
plugin API, and user data are unchanged.

Added

  • One-tap HID setup in BadUSB Studio: the transport card now offers
    Connect via Bluetooth, which opens the HID Keyboard screen for pairing,
    and Set up USB HID, which creates the rooted gadget and reports the
    outcome inline.
  • hidKeyboardOpen and hidUsbSetupJson bridge helpers: usb-permission
    gated device entry points for Python plugins. The USB helper checks root and
    configfs usb_gadget support before touching the gadget and returns a
    structured result with the reason a device cannot host a HID interface.

Fixed

  • BadUSB transport reporting: the runtime reported USB gadget whenever root
    was available, even when no HID gadget node existed, so the plugin showed a
    usable transport and let a run start against nothing. The mode is now none
    until a gadget node is actually present, and the plugin blocks the run with the
    reported reason.
  • BadUSB Studio visibility: the plugin registered its module in a USB
    section that Dolphy does not render, so the card never appeared. It now
    registers under the Other section like every other catalog plugin.
  • USB HID diagnostics: asking for the gadget on a kernel without
    configfs usb_gadget used to fail silently. The setup action now reports the
    missing kernel support and points to Bluetooth HID instead.
  • Plugin catalog listing: the BadUSB Studio row now shows the Other
    section that the plugin actually registers under.

Changed

  • BadUSB Studio 1.1.0: the shipped plugin bundle is now version 1.1.0 with
    the two transport actions and their handler functions.
  • Version: versionName 1.5.1, versionCode 30501.

Upgrade notes

  • Devices running 1.5.0 can update in place with the release-signed APK. No
    plugin reinstall, settings migration, or backup change is needed.
  • The USB action needs a rooted device whose kernel exposes
    configfs usb_gadget; other devices get an explicit message and should use
    Bluetooth HID.

Full Changelog: v1.5.0...v1.5.1

Dolphy 1.5.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 20:28

Dolphy 1.5.0 introduces BadUSB Studio, a catalog plugin that compiles and
runs DuckyScript 3.0 payloads over the HID session Dolphy already owns. The
release adds the payload engine, a permission-gated bridge, and the plugin
itself; catalog, plugin, and user-data formats are unchanged.

Added

  • BadUSB Studio plugin: the official catalog now lists a 22nd plugin with a
    payload library, an editor, validation before every run, an explicit safety
    gate, and a run log, all installed and updated through the plugin store.
  • DuckyScript 3.0 engine: a new compiler and interpreter cover comments
    (REM, REM_BLOCK), DEFAULT_DELAY, DELAY, STRING/STRINGLN and string
    blocks, key and modifier combos, INJECT_MOD, HOLD/RELEASE, REPEAT,
    DEFINE, VAR, integer expressions, IF/ELSE, WHILE,
    FUNCTION/RETURN, RANDOM_* keystrokes, MEDIA_* consumer keys,
    MOUSE_* input, and payload control (STOP_PAYLOAD, RESTART_PAYLOAD,
    RESET).
  • Transport selection: payloads run over the Bluetooth HID session when a
    host is connected and fall back to the rooted USB gadget at /dev/hidg0,
    reporting the active transport and the reason it is unavailable.
  • badUsb* plugin bridge: status, validation, run, and stop entry points
    are gated by the existing usb permission, cap scripts at 64,000 characters,
    and deliver events on the main thread.
  • New key codes: PAUSE and INSERT were added to the HID key table.

Changed

  • Keyboard session ownership: KeyboardService attaches the payload
    runtime to the active HID session and detaches it on teardown, so a run
    cannot outlive the transport it started on.
  • Static analysis: the engine was reorganised into smaller dispatch tables
    and helpers so the Detekt gate passes without suppressions.

Fixed

  • BadUSB Studio install: the catalog entry referenced a plugin file that
    was not published to main, so installing it returned HTTP 404. The plugin
    is now published and the catalog entry resolves.

Compatibility

  • No plugin reinstall, settings migration, or backup change is needed;
    installed plugins, favorites, custom remotes, and backups remain compatible
    with 1.4.1.
  • Unsupported device-only commands (ATTACKMODE, LED_*, BUTTON_*,
    WAIT_FOR_*, MATCH) compile as warnings instead of failing, so unmodified
    Hak5 and Flipper payloads still load.

Upgrade notes

  • Version: versionName 1.5.0, versionCode 30500.
  • Bluetooth HID payloads need a paired host; USB gadget payloads need root
    access to /dev/hidg0. Devices with neither can install and edit payloads
    but cannot run them.
  • Devices running 1.4.1 can update in place with the release-signed APK.

Full changelog: https://github.com/Alaa91H/Dolphy-App/blob/main/CHANGELOG.md
Compare: v1.4.1...v1.5.0

Dolphy 1.4.1

Choose a tag to compare

@github-actions github-actions released this 04 Nov 18:45

Dolphy 1.4.1

Dolphy 1.4.1 is a focused maintenance release that restores reliable IR catalog
refreshes from the Flipper IRDB Sync plugin. The catalog, plugin, and
user-data formats from 1.4.0 are unchanged, and no reinstall is required.

Fixed

  • Flipper IRDB Sync startup: the plugin bridge now accepts Python bound
    methods directly as PyObject callbacks for irdbSync. Starting a sync no
    longer fails with Cannot convert method object to kotlin.jvm.functions.Function1.
  • Sync callback delivery: progress events, completion notices, and errors
    are delivered back to the installed plugin correctly, including the
    already-up-to-date path.

Compatibility

  • Kotlin and JavaScript callers keep the existing (String) -> Unit callback
    entry point; the new PyObject path is additive.
  • No plugin reinstall or data migration is required. Installed plugins,
    settings, favorites, custom remotes, and backups remain compatible with
    1.4.0.

Upgrade notes

  • Version: versionName 1.4.1, versionCode 30401.
  • Devices running 1.4.0 can update in place with the release-signed APK below.

Download

  • Dolphy-1.4.1.apk — signed with the private release key and verified
    with apksigner in CI. Debug-signed builds cannot be installed over it.

Full Changelog: v1.4.0...v1.4.1

Dolphy 1.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 18:07

Dolphy 1.4.0 adds native SmartTV casting and moves Flipper-IRDB refresh into
the official plugin store. The cast screen now speaks Chromecast, DIAL, and
DLNA/UPnP directly, while IR catalog updates follow the same review, permission,
and installation flow as every other plugin.

Highlights

  • Native SmartTV Cast: discover televisions and streaming devices over
    mDNS and SSDP, then cast a selected video or image without leaving Dolphy.
  • Chromecast CASTV2: connect to the receiver over TLS, launch the Default
    Media Receiver, load the selected media, and stop the session cleanly.
  • DIAL and DLNA/UPnP: launch the receiver's advertised DIAL application or
    send SetAVTransportURI and Play to its AVTransport control URL.
  • Reliable local delivery: a per-session media server uses an
    operating-system-assigned port, byte-range support, and an unguessable path
    token. The phone advertises a Wi-Fi or Ethernet address instead of a VPN or
    cellular address.
  • Flipper IRDB Sync plugin: install the new official plugin to download the
    latest Lucaslhm/Flipper-IRDB archive, inspect its status, and refresh the
    catalog used by Dolphy's built-in IR remotes.
  • Dedicated irdb permission: catalog changes are visible in plugin
    previews, the plugin manager, and the permission center.

Fixed

  • Cast discovery now uses each receiver's advertised protocol, port,
    application URL, and DLNA control URL instead of one hard-coded endpoint.
  • Selected media is served with range requests, so televisions can seek and
    resume correctly.
  • Leaving the cast screen or changing the video closes the active session and
    local server instead of leaving playback running in the background.
  • BLE GATT Explorer accepts numeric and named connection states, reads the
    selected characteristic from notification callbacks, and uses a valid
    disconnect callback.
  • BLE Asset Pack joins its advertising worker before stopping.
  • Plugin File Browser renders the delete confirmation and returns to the file
    list after the operation.
  • IR Signal Lab refreshes its status after repeating a pulse pattern.
  • The category view switch no longer changes modes when the active mode is
    tapped.

Security

  • IRDB downloads are restricted to the expected HTTPS GitHub hosts, validate
    redirects, reject archive paths outside Flipper-IRDB-main, and enforce
    compressed, extracted, file-count, and free-space limits.
  • IR catalog installation is atomic, so an interrupted or invalid sync cannot
    leave a partial database in use.
  • Cast control requests are confined to the local network, and the media server
    exposes only the selected file through a random per-session token.

Upgrade notes

  • Version: versionName 1.4.0, versionCode 30400.
  • No data migration is required. Settings, favorites, custom remotes, installed
    plugins, and existing backups remain compatible with 1.3.0.
  • The bundled IR catalog remains available immediately. Install Flipper IRDB
    Sync
    from the plugin store when an online refresh is wanted; the first sync
    downloads about 21 MB and preserves favorites and custom remotes.
  • SmartTV Cast requires the phone and television to be on the same local
    network. No storage permission is requested; the selected file is copied into
    app-private cache for the session.
  • The old built-in IR sync card has been removed. Sync status and controls now
    live in the plugin's Infrared module.

Full changelog: https://github.com/Alaa91H/Dolphy-App/blob/main/CHANGELOG.md

Dolphy 1.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 14:47

Dolphy 1.3.0 removes the remaining navigation and interface motion, making
every transition immediate and predictable. It also hardens the plugin panels
and moves all project links to the canonical repository.

Highlights

  • Zero-motion navigation: screens, category pages, the bottom bar,
    expandable settings, toasts, and NFC success states appear immediately.
  • System-wide suppression: motion is disabled at the Compose recomposer,
    process animator, activity and window transition, and predictive-back layers.
  • Fixed plugin panels: plugin preview, plugin host, and safe-mode notices
    use immediately visible panels with explicit back and outside-tap dismissal.
  • Canonical links: in-app links, plugin catalog downloads, and the
    documentation site now point to Alaa91H/Dolphy-App.

Fixed

  • Back navigation from plugin surfaces no longer animates or leaves an
    intermediate frame visible.
  • Plugin panels remain scrollable on small screens with correct navigation-bar
    insets.
  • Picker surfaces use consistent borders, and the collapsed expandable picker
    no longer draws a ripple.

Upgrade notes

  • Version: versionName 1.3.0, versionCode 30300.
  • No data migration is required. Settings, installed plugins, backups, and
    plugin data remain compatible with 1.2.0.
  • Motion is disabled inside Dolphy only; system-wide animation settings are not
    changed.

Full changelog: https://github.com/Alaa91H/Dolphy-App/blob/main/CHANGELOG.md

Verification

  • CI build: Release workflow
  • APK SHA-256: 7f06a574f133a3ee6dcb3d7df72deb2284f8b4ac6a5298714c5f6b56644eef18
  • Signature verification: passed by the release workflow and apksigner.

Dolphy 1.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 12:18

Dolphy 1.2.0 adds a complete, portable backup and restore workflow for all
durable app-managed data, including installed plugins, their settings, SQLite
databases, and custom files.

Added

  • Complete backup and restore: a new Settings card creates and restores a
    single JSON backup through the Storage Access Framework, so no storage
    permission is required.
  • Full data coverage: backups include every SharedPreferences file except
    the internal backup history, installed plugin sources and metadata, plugin
    settings (plugin_prefs_*), plugin data, permission vetoes, filesDir
    content, app-specific external files, SQLite databases, and WebView storage.
  • NFC scan history: the Room database nfc_scans.db and its SQLite sidecar
    files are captured. A WAL checkpoint runs before collection, and the database
    is closed before an in-place restore.
  • Plugin completeness: enabled and pinned state, deleted-plugin markers,
    plugin capabilities, and all plugin-created files are preserved.
  • Restore controls: the UI previews the backup date, settings count, plugin
    count, file count, and size before replacing local state.
  • Localization: the complete backup and restore experience is available in
    Arabic, English, and Russian.

Security

  • Backups carry a SHA-256 checksum over the canonical JSON payload; modified or
    corrupted files are rejected before any data is changed.
  • Restore paths are canonicalized and checked against their roots, blocking
    absolute paths, .. traversal, and preference names that escape the app's
    private storage.
  • Plugin signatures are verified during inspect and restore. Invalid signatures
    are rejected, while unsigned or unknown-key plugins require explicit user
    consent before restore.
  • Backup payloads are limited to 256 MB and 20,000 files to avoid unbounded
    memory and storage use.

Fixed

  • Empty files are now valid backup entries. This is required for zero-length
    SQLite -wal and -shm sidecars created after a checkpoint.

Upgrade notes

  • Version: versionName 1.2.0, versionCode 30200.
  • Backups containing database, WebView, or external-file roots require Dolphy
    1.2.0 or newer to restore. Older backups remain readable by 1.2.0.
  • Restore replaces the current app state with the state captured in the backup
    and requires a restart. Plugins, settings, files, or database rows created
    after the backup are removed.
  • The backup file is plain JSON and is not encrypted. Store it somewhere safe.
  • Cache and code cache are intentionally excluded. Android runtime permissions,
    home-screen widget bindings, and the APK itself are owned by the system and
    are not part of the backup.

Full changelog: https://github.com/Alaa91H/Dolphy-App/blob/main/CHANGELOG.md

Dolphy 1.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 10:32

Dolphy 1.1.0

Dolphy 1.1.0 delivers a unified category experience, contextual device
readiness, and a more expressive visual system.

Added

  • Unified category hubs: all eight categories now share a swipeable hub
    with hero summaries, service counts, search, pinned services, list and grid
    modes, and consistent navigation.
  • Scrollable bottom navigation: the floating navigation bar can be dragged
    horizontally and reserves enough width for each label, automatically
    revealing the active category when it is off screen.
  • Contextual device readiness: every category now probes the hardware and
    permissions it actually uses. Bluetooth, Wi-Fi, IR, NFC, camera, USB, and
    media readiness are surfaced directly in the category hero.
  • One-tap permission actions: missing permissions and disabled radios expose
    compact, category-specific actions that request the required permission or
    open the relevant system settings.
  • AMOLED theme: a fourth appearance mode with pure-black backgrounds for
    deeper contrast and reduced power use on OLED displays.
  • Inline appearance pickers: theme and accent selection now use the same
    expandable, preview-rich picker pattern as language selection.

Security

  • Plugin integrity: .dolphyplugin packages can carry an ECDSA P-256
    signature over their canonical source. A signature that does not match the
    payload is always rejected, and unsigned or untrusted-key packages require an
    explicit opt-in that is now surfaced in the install preview.
  • Plugin transport: imports are HTTPS-only. Plain-HTTP links are rejected
    rather than upgraded, redirects are followed manually so a downgrade cannot
    slip through, and the download policy is covered by unit tests.
  • Plugin WebView: file and content access are disabled, mixed content is
    blocked, popups and autoplay are off, and navigation is restricted to HTTPS.
  • Removed the unused READ_EXTERNAL_STORAGE permission.

Changed

  • Category experience: navigation now uses a horizontal pager, and the
    bottom bar scrolls instead of compressing all destinations into one row.
  • Status semantics: ready and granted states use a dedicated success green;
    disabled, unavailable, permission-required, and busy states use red.
  • Permission flow: runtime permissions are requested in context from the
    relevant category instead of being prompted automatically at app startup.
  • Device action chips: permission and settings actions are compact,
    descriptive, and integrated into the category hero rather than shown as a
    separate card.
  • Appearance: the settings screen and shared navigation surfaces use the
    refreshed typography, shape, and motion system, with AMOLED labels localized
    in Arabic, English, and Russian.
  • Local-network egress: every LAN HTTP call site (router manager, LAN and
    camera scanning, IPP printing, TV cast, bandwidth test) now goes through
    LocalHttpPolicy.requireLocal, so a bug or a malicious plugin cannot point
    these features at a public host. network_security_config.xml pins trust to
    the system CA store, blocking interception through user-installed CAs.
  • Kotlin quality gate: detekt runs on every module with a reviewed
    per-module baseline; new findings fail CI, legacy ones are recorded.
  • All 18 hand-written dependency coordinates moved into
    gradle/libs.versions.toml.
  • Removed the obsolete android.dexOptions.javaMaxHeapSize and
    kotlin.jvm.target.validation.mode=ignore build overrides; a full debug build
    was verified without them.
  • CI now runs the unit tests of every module. The previous step executed
    :app:testDebugUnitTest, which had no sources, so no test ever ran.
  • Added SECURITY.md, CONTRIBUTING.md and docs/ARCHITECTURE.md.

Fixed

  • Removed the automatic Bluetooth permission prompt shown on every launch;
    permission state is synchronized silently and refreshed on resume.
  • Prevented bottom-navigation labels from being truncated by making the bar
    horizontally scrollable with a comfortable minimum item width.
  • Kept category navigation, search, pinning, and list/grid mode available while
    device permissions or radios are unavailable.
  • Corrected positive and negative status colors across the category hub and
    permission center, including permission rows and access badges.

Upgrade notes

  • Version: versionName 1.1.0, versionCode 30100.
  • No breaking API or project-format changes are required for this release.

Dolphy 1.0.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 08:08