Skip to content

feat(upload): take photos in the app and upload them - #14

Merged
mlapaglia merged 1 commit into
mainfrom
feat/011-camera-upload
Oct 20, 2026
Merged

mlapaglia merged 1 commit into
mainfrom
feat/011-camera-upload

Conversation

@mlapaglia

Copy link
Copy Markdown
Collaborator

Adds Take photo to the + menu, shown wherever Upload photos is, on phones with a camera.

Android opens the camera app's single-shot capture mode (ACTION_IMAGE_CAPTURE), which writes the photo through the app's FileProvider into files/captures and is uploaded byte for byte. That mode is reduced (no Night Sight or other modes) and camera apps leave the location out, so Android camera photos have no GPS for now; a follow-up is on the backlog. Opening the full camera app and offering what it saved was tried and reverted, because photos still being processed by the camera were missed.

iOS opens Apple's camera through the app's first app-local plugin (OriginalCameraPlugin.swift, registered from a CAPBridgeViewController subclass set in Main.storyboard). It writes one JPEG at full quality with the capture's metadata and a GPS block from the phone's location, asking for camera and location access when first used.

Taken photos are never lost: they stay in app storage, are listed as pending in Preferences, and are deleted only after Lychee accepted them. Pending photos join the upload queue again after launch and whenever the app returns to the foreground, and a stuck one can be deleted from the upload sheet. Uploads that continue after the app closes are planned as feature 012.

No new dependency. New native pieces: Android capture, deleteCapture and hasCamera, a files-path for captures and a queries entry for the capture intent (no camera permission); iOS camera and location usage strings. 681 Vitest tests. The owner checked it on Android and iOS.

Spec impact: adds feature 011 spec, plan, tasks, open questions Q-011-01 to Q-011-06 and ADR-011-01, notes the change in feature 010, and updates the knowledge map and roadmap.

🤖 Generated with Claude Code

The + menu gains Take photo. Android opens the camera app's single-shot mode, which writes the photo into the app's storage and is uploaded untouched. iOS opens Apple's camera through a new app-local plugin that writes one JPEG with the capture's metadata and the phone's location. Taken photos stay in app storage until Lychee accepted them, upload again after launch and on resume, and can be deleted when stuck.

Spec impact: adds feature 011 spec, plan, tasks, open questions Q-011-01 to Q-011-06 and ADR-011-01, notes the change in feature 010, and updates the knowledge map and roadmap

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mlapaglia
mlapaglia merged commit c80bc38 into main Oct 20, 2026
4 checks passed
@mlapaglia
mlapaglia deleted the feat/011-camera-upload branch October 20, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant