Repository navigation
feat(upload): take photos in the app and upload them - #14
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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