I have 405 files that for whatever reason have AssetFile.shown=0 but I can’t find any reason for that and they are not becoming AssetFile.shown=1 and corresponding Asset row is not being created even after ./photostructure sync-file --force --info and no errors shown
$ ./photostructure sync-file --info --force F:/SynologyDrive/Photos/0001/0157.jpg --no-color
...
... lots of info without any errors
...
$ ./photostructure list --where="AssetFile.shown = 0 and AssetFile.uri like '%/0157.jpg'"
F:\SynologyDrive\Photos\0001\0157.jpg
You can look at the other asset files associated to the same asset.
If it’s the only asset file for the asset, I suspect it failed to create a preview image set, or ffmpeg failed to transcode, and the asset’s shown column should be 0 as well.
Awesome. Then that’s a bug in the deduplication logic
select uri from AssetFile where assetId = 98
psfile://32hPdZdkz/SynologyDrive/Photos/0001/0157.jpg
psfile://32hPdZdkz/SynologyDrive/Photos/0001/0158.jpg
psfile://32hPdZdkz/SynologyDrive/Photos/0001/0156.jpg
I added all those images to the gist above where it’s clearly seen they are totally different images
These images seem to have a precise (and same) captured-at.
PhotoStructure assumes if there are minutes or seconds or milliseconds set in the date, that it’s an actual timestamp, and not an estimated date stamp. Due to computational imagery, PhotoStructure has to dramatically relax minimum image correlation to make RAW and JPG pairs match.
This makes all the images be considered different:
I think the heuristic could be that if you have 000 milliseconds, that’s an artificial time. I guess the 0.1% chance of the false positive heuristic is acceptable )
# +---------------------------+
# | datesBeforeAreEstimated |
# +---------------------------+
#
# PhotoStructure automatically interprets captured-at timestamps before this
# ISO-formatted datestamp as "estimated." PhotoStructure also considers
# timestamps whose minutes, seconds, and milliseconds are all 0 as
# "estimated."
#
# When assets have an estimated captured-at time, tighter image correlation is
# required to prevent different images as being incorrectly aggregated into
# the same asset.
#
# The default value is the release date for the Nikon Coolpix 950, which was
# one of the first prosumer digital cameras with ~2MP resolution.
#
# PS_DATES_BEFORE_ARE_ESTIMATED="1999-02-15"
Is there a way to rebuild specific files only? ./photostructure sync-file --force leaves AssetFile.shown = 0. I am currently trying to ./photostructure sync --force --rebuild --exit-when-done but I think it’s an overkill to rebuild the entire library. Ideally I should be able to do something like ./photostructure --where "AssetFile.shown = 0" | ./photostructure sync-file --force --rebuild
Thanks for the patience on this old thread! I’m doing a pass over the forum to close out issues that no longer apply to current versions.
This report is from April 2021, and a lot has changed since:
The standalone sync-file command was removed at the end of 2021. File-level re-imports are now handled by the normal sync process.
The shown=0 heuristics around AssetFile have been substantially reworked — shown is now driven by sibling validation, variant selection, and rating filters rather than by a single sync pass.
For targeted remediation, the current options are on the Sync admin page (/admin/sync):
“Sync now” next to any folder — stops the current sync and immediately rescans just that directory.
“Re-import all files” from the actions dropdown — full re-import (the process prior versions called a “library rebuild”).
Sync accountability section — per-run metrics with downloadable CSVreports showing exactly what happened to each file in the last sync.
Closing this thread as outdated. If you’re still seeing unexpected shown=0 behavior on a current build (2026.x), please open a fresh topic with a recent sync report and the PhotoStructure version — happy to dig in from there.