A read-only Android client for DropBear storage
  • Kotlin 97.1%
  • Just 2.9%
Find a file
Erik Stephens 4b6447eb35 Add app::reconnect to re-attach over Wi-Fi without a cable
Wireless adb drops on deep sleep, Wi-Fi roaming, DHCP renewal, or an idle timeout, and `just app::wireless` can't recover it — it rediscovers the phone's IP via `adb shell`, which needs a live connection that's already gone. As long as the phone hasn't rebooted it's still listening on tcpip 5555, so `app::reconnect` just re-runs `adb connect <ip>:5555` against a supplied or PHONE_IP-provided address. Only a reboot (which clears tcpip mode) still forces the one-time cable + `app::wireless` re-arm.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 17:00:58 -07:00
.scratch/native-client-v1 Close out native-client-v1: mark issue 09 and the PRD done after on-device validation. Erik validated issue 09's checklist on the phone — live whole-root search filters as typed, files and folders open from results, search still works in airplane mode over the cached namespace, and the settings Storage section reports usage, re-measures on a cap change, and clears the cache — so 09 moves to done with a Resolved note, and with it every one of the nine implementation issues (01→09) is landed and closed. 2026-07-12 16:10:52 -07:00
app Polish the launcher icon, splash, and app metadata 2026-07-12 17:00:58 -07:00
contract Close issue 09: whole-root path search + blob-cache management. Two features land against the cached namespace and the sha-keyed blob cache, both tested at the established seams; full ./gradlew check (all JVM unit tests + Android lint) is green. 2026-07-12 15:59:19 -07:00
docs Close out native-client-v1: mark issue 09 and the PRD done after on-device validation. Erik validated issue 09's checklist on the phone — live whole-root search filters as typed, files and folders open from results, search still works in airplane mode over the cached namespace, and the settings Storage section reports usage, re-measures on a cap change, and clears the cache — so 09 moves to done with a Resolved note, and with it every one of the nine implementation issues (01→09) is landed and closed. 2026-07-12 16:10:52 -07:00
gradle Issue 07: open files — blob pipeline + viewers. Contract module gains the §5 read path: ObjectKeys.blob() derives the sharded content-addressed key, BucketReader gains a streaming getObject(key, sink, onChunk) (default buffers via the byte getObject; the S3 impl streams 64 KB chunks reporting running count + content length, and an exception thrown out of onChunk is the cancellation mechanism), and fetchBlob() serves cache-first, else downloads to a temp file hashing as bytes arrive, verifies against the entry's sha256, and commits into the sha-keyed BlobCache by atomic rename — any failure or cancellation deletes the temp and caches nothing, and cache hits bump mtime so issue 09's least-recently-opened eviction becomes a sort. App-side, BrowseViewModel.openFile drives an OpenState (progress dialog with cancel → per-class error dialog → viewer), failing fast with the offline message when uncached and offline, and guarding the cancel race so a late progress write can't resurrect the dialog. Verified blobs classify into the internal Coil image viewer (image/* mime), the internal text viewer (≤1 MB strict UTF-8, NUL disqualifies), or a FileProvider handoff to the system chooser under the entry's real display name (cache files are named by sha). Logcat reports cache hit/miss and sha verification per ERIK.md. Tested at the two agreed seams: fetchBlob against the in-memory fake (verify, mismatch, missing, auth, offline, cancel, no leftover temps) and the view model against a scripted opener. 2026-07-11 09:44:43 -07:00
.gitignore Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
AGENTS.md Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
app.just Add app::reconnect to re-attach over Wi-Fi without a cable 2026-07-12 17:00:58 -07:00
build.gradle.kts Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
build.just Add justfiles mapping gradle/adb workflows to just recipes 2026-07-10 11:07:44 -07:00
CONTEXT.md Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
DROPBEAR-API.md Registry timestamps are second-precision RFC 3339, not the manifest canonical form: the decoder applied the six-fractional-digit manifest rule to registered_at/retired_at, so every real registry (e.g. registered_at 2026-06-30T14:58:03Z) failed refresh as Malformed. Mirror the Go writer's registry validator instead (UTC, literal Z, fractional seconds rejected), correct the hand-authored registry fixtures that carried the manifest form, add a fractional-registered_at malformed fixture matching Go's own rejection test, vendor the real bucket's registry as a canonical fixture, and document the two timestamp forms in DROPBEAR-API.md §3/§4. 2026-07-11 04:43:36 -07:00
gradle.properties Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
gradlew Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
gradlew.bat Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
Justfile Add justfiles mapping gradle/adb workflows to just recipes 2026-07-10 11:07:44 -07:00
NATIVE-CLIENT-v0.md Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
NATIVE-CLIENT-v1.md Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
settings.gradle.kts Scaffold project and implement the pure-Kotlin contract core (native-client-v1 issues 01–04) 2026-07-10 07:15:01 -07:00
test.just Add justfiles mapping gradle/adb workflows to just recipes 2026-07-10 11:07:44 -07:00