2.5 KiB · text History 1ce9641

DMS Android

Companion app for the DMS web service. First slice: pair an instance via QR.

Open in Android Studio

  1. Install Android Studio Hedgehog (2023.1.1) or newer — Iguana / Koala / Ladybug all work.
  2. File → Open → select this android/ directory.
  3. Studio will prompt to “Trust” the project, then sync Gradle. First sync downloads dependencies (~5 min).
  4. Hit Run against an emulator or device. Min SDK 26 (Android 8.0).

If sync complains about a missing Gradle wrapper jar: gradle wrapper --gradle-version 8.10 inside android/ (or let Studio offer to install one).

Pairing flow

  1. On the web service, log in → Devices → generate an API token. The page renders a QR encoding dms://pair?base=<server>&token=<api-token>.
  2. In the Android app, tap Scan QR.
  3. The app stores (base_url, token) in EncryptedSharedPreferences, calls GET /api/profile to verify, and lands on the home screen showing the connected user.

The same QR can also be opened from the phone’s browser; the app’s dms://pair intent filter forwards it to the pair screen with the fields pre-filled.

What works today

  • QR scan → pair → token + base URL persisted (encrypted)
  • GET /api/profile round-trip for verification
  • Home grid: paginated upload thumbnails from /files/<path>.thumb.<ext> with original-file fallback
  • Search: free-text + tag filter (server parses ns:value and ns:* wildcards)
  • Search: free-text query, per-source toggles (file name / item name / description / user tags / ocr / desc / other namespaces) with full parity to the web /search page; matched tags surface as chips on each result card
  • Detail: full image, metadata, tag chips that pivot to a tag-filtered search, plus an “Add tags” input that writes via the new POST /api/uploads/{id}/tags
  • Share-in: receive one or many images from the share sheet, add tags, upload sequentially via multipart, with a live progress indicator
  • Share-out: from the detail screen, download the upload to cache and hand it to another app via FileProvider
  • Pull-to-refresh + infinite scroll on home and search
  • Themes: stock Material Light plus the OKLCh palettes from the Casabeza Android apps (Her, After Dark, Forest, Sky, Clays, Stones, Dark). B612 mono typography matches the web. Picker lives under the home screen’s overflow menu; selection persisted in EncryptedSharedPreferences.
  • Re-pair / unpair (clears stored creds)

What’s next

The original ANDROIDAPP TODO is fully shipped. See ../TODO.md for any further polish ideas.