mirror of
https://github.com/narrrl/proton-drive-linux.git
synced 2026-11-03 16:41:26 +01:00
A camera that writes both puts two files on the volume, and the timeline showed two tiles of the same photo. They are one shot to the person who took it. Schema v30 records what ties them together: the server's own duplicate hash and main-photo relation, plus a `group_key` every member of a shot carries. The key is computed when the timeline is replaced, in three steps — the server relation first, because it knows about live photos and bursts and we do not have to guess at them; then same capture day, same file-name stem and one member raw while the other is not, which is the pair a camera writes; otherwise the photo is its own group. The member the grid shows is the non-raw one, since a JPEG decodes in milliseconds and is what the person expects to see. The gallery therefore pages by group and carries `group_size` and `has_raw` on each entry, and the date scrubber counts what the page shows. The Raw tab is the exception and still lists every raw file, because that tab exists to answer "which raws do I have". Album pages are not grouped at all: an album is a list someone made, and it shows exactly what they put in it. `TimelineRow` is a struct now. It had grown to five positional fields and was about to grow to seven, at which point nobody can read a call site.