Skip to content

Fresh installations now obtain and persist an anonymous device credential before camera or gallery uploads. Existing linked accounts are reused, simultaneous first-use requests share account creation, and failed requests remain retryable. The backend's authentication and daily quotas remain unchanged.

The reported failure was HTTP 401, not server unavailability. An isolated Android test installation subsequently minted its account with HTTP 201 and completed a live gallery scan with HTTP 200 in about 3.1 seconds, matching Vipelierre at 92%. Camera capture shares the fixed callback but was not tested on a physical device.

Lint and typecheck passed, alongside 2,438 Jest tests (11 skipped). The concurrency regression failed first with two account creations instead of one, then passed. Maestro could not run because its CLI is absent; a disposable-installation flow was added and the gallery path was exercised manually through Android tooling.

Implementation: mobile PR #658.