web: keep a saved photo's look in EXIF and its own row

EXPORT no longer burns the caption strip: the pixels stay the photo's own
and the look travels as metadata — ImageDescription (0x010e) for the tag,
UserComment (0x9286, ASCII header) for the recipe JSON.

SAVE PHOTO now stores the look with the frame (photos.recipe) and the
uploader's consent for the community film strip (photos.consent, PATCH
/api/photos/:id for the owner). The landing reel skips non-consented frames,
and a new MY PHOTOS tab lists the account's saves, reopens one with the
settings it was stored with, and carries the two consent switches.
This commit is contained in:
2026-09-18 12:49:05 +07:00
parent cf4b01d4b3
commit 0627f8dd91
9 changed files with 292 additions and 39 deletions
+6
View File
@@ -29,6 +29,7 @@ export const en: Dict = {
'tab.presets': 'PRESETS',
'tab.favorited': 'FAVORITED',
'tab.photos': 'MY PHOTOS',
'tab.light': 'LIGHT',
'tab.wb': 'WB',
'tab.fx': 'FX',
@@ -112,6 +113,11 @@ export const en: Dict = {
'save.photoFull': 'That is all {max} — remove one in My photos.',
'save.photoNoSource': 'Load a photo first.',
'save.photoFailed': 'Could not save the photo: {msg}',
'myp.newOn': 'NEW SAVES: FILM STRIP',
'myp.newOff': 'NEW SAVES: PRIVATE',
'myp.thisOn': 'THIS PHOTO: FILM STRIP',
'myp.thisOff': 'THIS PHOTO: PRIVATE',
'myp.empty': 'NO SAVED PHOTOS YET.',
'photo.contribute': 'CONTRIBUTE A PHOTO',
'photo.uploading': 'UPLOADING…',
+6
View File
@@ -36,6 +36,7 @@ export const vi = {
'tab.presets': 'PRESETS',
'tab.favorited': 'FAVORITED',
'tab.photos': 'ẢNH CỦA TÔI',
'tab.light': 'LIGHT',
'tab.wb': 'WB',
'tab.fx': 'FX',
@@ -119,6 +120,11 @@ export const vi = {
'save.photoFull': 'Đã đủ {max} ảnh — xoá bớt trong Ảnh của tôi.',
'save.photoNoSource': 'Chưa có ảnh nào để lưu.',
'save.photoFailed': 'Không lưu được ảnh: {msg}',
'myp.newOn': 'BẢN LƯU MỚI: LÊN DẢI PHIM',
'myp.newOff': 'BẢN LƯU MỚI: RIÊNG TƯ',
'myp.thisOn': 'ẢNH NÀY: LÊN DẢI PHIM',
'myp.thisOff': 'ẢNH NÀY: RIÊNG TƯ',
'myp.empty': 'CHƯA LƯU ẢNH NÀO.',
'photo.contribute': 'ĐÓNG GÓP ẢNH',
'photo.uploading': 'ĐANG TẢI…',