Repository navigation
Releases
Dolphy 1.5.2
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 andapi.getDevice().wifi.savedPasswords(callback)for JavaScript plugins return{ok, source, count, networks[{ssid, password, security}]}. The call requires thewificapability plus root or a granted Shizuku shell. SavedWifiCredentialsreader. Probes the Android 11+ Wi-Fi APEX store and the legacy/data/misc/wifipath, parsesWifiConfigStore.xml, unescapes XML entities and skips open or enterprise networks that carry no pre-shared key.- Parser test coverage.
SavedWifiCredentialsTestcovers the current and legacy store layouts, entity escaping, password-less networks and the dump command.
Fixed
- Foreground service on Android 9 and older.
RootdServicepassed aforegroundServiceTypetostartForegroundunconditionally, 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
%dplaceholders, 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.
versionName1.5.2,versionCode30502.
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,rootdandbridge:flipper, plusassembleDebug,detektandlintVitalRelease— passed one6b9745. - 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-256477fc5bc32f3d0e755ca31f1c3f671761c8069cd0b2f8c02e682beff3573c7f5.
Full changelog: v1.5.1...v1.5.2
Dolphy 1.5.1
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. hidKeyboardOpenandhidUsbSetupJsonbridge helpers:usb-permission
gated device entry points for Python plugins. The USB helper checks root and
configfs usb_gadgetsupport 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 gadgetwhenever 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 nownone
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 theOthersection like every other catalog plugin. - USB HID diagnostics: asking for the gadget on a kernel without
configfs usb_gadgetused 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:
versionName1.5.1,versionCode30501.
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
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/STRINGLNand 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 existingusbpermission, cap scripts at 64,000 characters,
and deliver events on the main thread.- New key codes:
PAUSEandINSERTwere added to the HID key table.
Changed
- Keyboard session ownership:
KeyboardServiceattaches 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 tomain, 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:
versionName1.5.0,versionCode30500. - 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
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 asPyObjectcallbacks forirdbSync. Starting a sync no
longer fails withCannot 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) -> Unitcallback
entry point; the newPyObjectpath 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:
versionName1.4.1,versionCode30401. - 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
withapksignerin CI. Debug-signed builds cannot be installed over it.
Full Changelog: v1.4.0...v1.4.1
Dolphy 1.4.0
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
sendSetAVTransportURIandPlayto 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
latestLucaslhm/Flipper-IRDBarchive, inspect its status, and refresh the
catalog used by Dolphy's built-in IR remotes. - Dedicated
irdbpermission: 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 outsideFlipper-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:
versionName1.4.0,versionCode30400. - 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
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 toAlaa91H/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:
versionName1.3.0,versionCode30300. - 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
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
SharedPreferencesfile 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.dband 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-waland-shmsidecars created after a checkpoint.
Upgrade notes
- Version:
versionName1.2.0,versionCode30200. - 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
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:
.dolphypluginpackages 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_STORAGEpermission.
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.xmlpins trust to
the system CA store, blocking interception through user-installed CAs. - Kotlin quality gate:
detektruns 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.javaMaxHeapSizeand
kotlin.jvm.target.validation.mode=ignorebuild 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.mdanddocs/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:
versionName1.1.0,versionCode30100. - No breaking API or project-format changes are required for this release.
Dolphy 1.0.0
Full Changelog: https://github.com/Alaa91H/Dolphy-App/commits/v1.0.0