A read-only Android client for DropBear storage
  • Kotlin 96.2%
  • Just 3.8%
Find a file
2026-07-13 12:51:47 -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 Give debug builds a .debug application id so they coexist with the Obtainium release 2026-07-12 17:56:43 -07:00
contract Vendor Go golden fixtures for the storage read contract and add decoder tests against them, so a Go-side format drift breaks a test here instead of silently going stale. 2026-07-13 12:51:47 -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 Add release signing so friends can install and update in place 2026-07-12 17:17: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 Give debug builds a .debug application id so they coexist with the Obtainium release 2026-07-12 17:56:43 -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 Publish releases to Forgejo via fj instead of GitHub 2026-07-12 17:32:37 -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 Vendor Go golden fixtures for the storage read contract and add decoder tests against them, so a Go-side format drift breaks a test here instead of silently going stale. 2026-07-13 12:51:47 -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