Replies: 2 comments 5 replies
|
Green light on the direction and on the first slice as scoped. 1. It fits. The phone is where photos originate, and the current alternative is 2. Browse, create, upload, Send is the right boundary. Delete, rename, and 3. One request per image, not a multipart batch. 4. Yes: strip GPS by default, and not as a toggle in v1. 5. Reuse a general device-capability model, not a Gallery-local one. On the Web form: you're right and it's worse than described. Scopes. Sequencing. Your list is the order I'd want. Contract-only PR with fixtures and |
|
Thanks — I implemented the accepted contract-first slice and published it as a stacked pair in Companion:
Please merge #7 first. Once it lands, I will retarget #8 to #8 follows your decisions here: browse/create/upload/Send only, one idempotent request per image, server-owned GPS removal/orientation normalization/ICC preservation, default |
Uh oh!
There was an error while loading. Please reload this page.
Summary
I would like to propose a native Gallery surface in Tesserae Companion: browse the server's Gallery folders, upload photos from the iOS photo library, and hand an existing Gallery image into the app's current Send flow.
The phone is the natural place where new photos enter the system, while Tesserae should remain the storage, validation, rendering, and device-capability source of truth. This would complement the Web admin rather than embed it or duplicate its filesystem-oriented controls.
This is separate from native Lineups authoring (#203) and builds on the Companion contract direction from #147. Offline Album support from #177 would be a later Gallery-folder action, not the definition of Gallery itself.
Product boundary
There are three related but distinct concepts:
frame_cachecapability.In particular, a device such as PicPak can still benefit from Gallery browsing, uploads, and online Send even though its current community firmware does not implement Offline Album playback.
Proposed native workflow
Folder list
A Gallery destination in Companion would show:
Folder detail
PhotosPicker;This gives the first slice a focused job: browse, create, upload, and send. Delete, rename, move/copy, camera capture, and Share Sheet “Save to Gallery” can follow once the read/upload contract is proven.
Companion API direction
I do not think the app should call the existing
/plugins/picture_gallery/...browser routes. Those routes use browser forms, redirects, filenames, and Web session behavior rather than a stable app contract.A capability-gated
/api/app/v1surface could expose operations along these lines (names illustrative):Suggested contract properties:
kind: internal | externaland server-computedwritablestate;gallery:readandgallery:write(exact names open to the contract owner);The iOS app would own Photos selection, upload queue/progress, retry UI, previews, and navigation. It would not send Photos-library identifiers or reason about server paths.
Offline Album as a follow-up
Once Gallery management is established, a folder can gain Play offline on a display, mapping to the existing Album model:
Eligibility must be based on the device's runtime capability, not its model name and not a hard-coded assumption that storage must be an SD card. A future client with suitable internal flash could implement the same contract.
I suggest the server expose a computed eligibility state for each target rather than making Companion interpret raw heartbeat details:
supported— the latest usable heartbeat advertisesframe_cache, optionally with capacity andmax_frames;unsupported— a current/recent heartbeat explicitly lacks it;unknown— there is no usable current capability report, for example a device that has not checked in.The same rule should be reflected in the Web Gallery UI. Today the Offline Album form lists every registered device whose kind resolves, so an unsupported PicPak can be checked and saved even though it will never receive a collection. The UI should not present those devices as equally eligible; unsupported targets should be disabled with a reason, while unknown/offline targets should be clearly distinguished from confirmed support.
That Web correction can remain a small independent server PR; it does not need to wait for Companion Gallery implementation.
Proposed sequencing
Each step can be reviewed and shipped independently. The MVP does not require firmware changes and does not depend on Offline Album support.
Questions
All reactions