Any/all of these features require me to build out “asset transform” support, where each “transform” is
- the time of transform
- the transformed field
- what transform was applied (insert, delete, replace)
- the previous value(s) and
- the new value(s)
With this information, PhotoStructure can then aggregate and “replay” the transforms at sync time to a given asset.
We need insert, delete, replace to handle fields that are arrays, like keywords.
We need the previous value to detect if the asset has been changed by another tool. If the value isn’t what PhotoStructure expects as per the existing transforms, it won’t apply that transform.
This mechanism allows PhotoStructure to reliably determine what value “wins” for a given set of asset file variants, and allows external apps to “override” what’s been done in PhotoStructure.
(I had an initial version that just wrote the title to a sidecar, but then when I plugged in an older hard drive with a bunch of higher-resolution originals and RAW files, those were picked as the “primary” variant, and they didn’t have my changes, so it “removed” all that work).