Add Map Point photos - #384
Draft
KacperKozak wants to merge 1 commit into
Draft
Conversation
16 tasks
KacperKozak
force-pushed
the
photo-assets
branch
from
August 28, 2026 14:48
4b2caba to
127da80
Compare
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.
Map Point photos become durable Hosted Assets. The phone normalizes and uploads them natively, owners attach them to server-owned Map Points, and signed-out readers receive bounded public images. Transfer state remains reliable across offline periods, process death, sign-out, and Account changes.
Warning
Risk: High. This adds native media processing, authenticated uploads, durable retry and delete jobs, and server attachment state.
Complexity: High. It coordinates iOS and Android normalization, Asset identity, Map Point attachment, and background lifecycle.
DB: Schema and data. It adds durable Asset jobs and normalized local files. The parked Map Point media prototype needs no migration because it never shipped enabled.
Tasks
vescape-app/vescape-server#29andvescape-app/vescape-server#33Blocked by
vescape-app/vescape-server#33Description
Photos picked or captured on-device pass through one native pipeline. It applies orientation, strips metadata including GPS, limits dimensions without upscaling, and produces WebP with JPEG fallback. A client-generated UUID identifies each Asset before the first upload, so an ambiguous retry addresses the same Asset instead of creating an unknown orphan.
Native owns normalized files, remote identity, retry policy, and deletion through a durable job queue. JS renders state and sends intents. Map Point owners can add, remove, replace, and retry photos while public readers receive bounded server-resized images.
Map Points remain server-owned. Upload and attachment use their own Asset and Map Point endpoints. If upload succeeds but attachment fails, native retries with the Asset ID it already holds and does not upload the bytes again.