The situations that actually happen, grouped by where you see them.
Tap Open Opensolr Photos. This happens when Android has not verified the app link yet, right after installing, or with a debug build.
The sign-in must finish within 15 minutes, on the phone that started it. Tap Sign in with Opensolr again.
The account's API key changed or the account is not active. Sign in again; your index is untouched.
Every phone uses one index. Delete an index you no longer use in the control panel, or upgrade, then tap Try again.
This phone's index belongs to a different account. Sign in with that account, or delete the index from it first.
The index took longer than usual to reload. Wait a minute and tap Try again, or run a Force Re-Sync.
Open the Sync screen. If a sync is running, they are on their way. Otherwise check the photo's folder is ticked under Folders being indexed, then Force Re-Sync. A sync compares the folders on the phone with the phone's own copy of the index; it never walks the index itself. So a photo can also be missing because the copy says it is indexed while the index holds nothing for it. Force Re-Sync first; if it is still missing, Reset the index, which builds the index and the phone's copy again from scratch.
Only one sync runs at a time, and no button is refused as busy: the running sync is stopped first, then what you asked for runs. Stop halts every sync and face job until you press a button again.
More than half of the indexed photos went missing at once. That is almost always a phone that cannot see them (a storage card not mounted, a permission taken away), not photos you deleted, so nothing is removed. If you did delete them, tap Remove the N missing photos from the index on the Sync screen.
Only the reading of the picture waits for next month's allowance or an upgrade. New photos are still indexed by date, camera, place, file name and your own tags and wording, and they are found by those words straight away. What they show is added when there is allowance again. Printed text and the words already read out of a photo are kept, so a later pass that cannot read it loses nothing, as long as it is the same file — the app checks the file's md5.
The index is over a limit of the plan and Opensolr closes it until it is back under. Upgrade, or wait for the monthly bandwidth reset.
The index had disappeared from the account and was created again, empty. Syncing alone does not refill it: a sync compares your folders with the phone's own copy of the index, and that copy still describes the index as it was, so it finds nothing to add. Re-read or Reset on the Sync screen is what puts the photos back, and the phone's copy drives it: while the index is empty that copy is the only record left, so every photo is handed to Opensolr again from it, with your tags, the people and your wording, and a picture Opensolr has already read is served from its cache.
They could not be opened or decoded on the phone, usually damaged files or unusual formats. The red icon next to the duplicates icon on the Photos screen lists them, each with its file name and the reason. They are not tried again until the file changes or you pick them for Re-sync.
Expected. A sync compares your folders with the phone's own copy of the index, all on the phone, so a sync with nothing to do makes no requests at all. Earlier versions asked the index every time, about 21 requests and 1.8 MB for a library of 10,000 photos.
At install, and again after a reinstall, the phone reads its copy of the index once: every field except the search vector and the duplicate keys. It is read once and then kept in step by every write, so this wait happens only that one time. If the read fails, keep the phone on the network and open the Sync screen again to retry it; if it keeps failing, Force Re-Sync.
Saving writes on the phone and is finished there. The sync that starts straight after carries the change up, 50 photos per call and with no pictures attached, because only the words changed; it uses the photos_words endpoint. If syncing is paused or the phone is offline, the change stays pending on the phone and goes up with the next sync. Nothing is lost in the meantime: search and browsing on the phone already use the new words.
That is what it does. In the tagging sheet for several photos, My tags (Albums) has an Add / Replace switch. Add puts the words on top of whatever each photo already carries. Replace makes the words the whole of that field on every ticked photo. The sheet says so under the switch, and lists what the ticked photos already carry, with counts.
They are gone. Press and hold a photo to start selecting, then tap to tick the rest. Selection ends by itself when you clear the last tick.
Fixed in 2.5. A photo with no date of its own no longer takes today's date after you tag it; the index keeps the date it had. (Since 3.x the app does not write to photo files at all.)
A tick on a group heading takes the whole group — the whole year, the whole month, the whole day — not only the photos loaded on screen. In a text search, Best matches and Also similar have no group tick, because the line between them moves as more results arrive.
The plan does not include vector search, or this month's AI requests are used up. The note above the results says which. On a plan without vector search nothing is sent to be read at all: no picture leaves the phone and nothing is charged for reading. Photos are indexed by date, camera, place, file name and your own tags and wording, and search matches those words.
The photo has no GPS data, or photo-location access was not allowed when it was indexed. Allow it in Android settings; photos indexed from then on carry their place.
It was deleted or moved. The next Re-Sync removes it from the phone's copy of the index and from the index itself.
The index is still on an older configuration, so it carries no duplicate keys yet. Open the photos screen and approve the reset, see sync.
Browsing — the years, the months, the days, their counts and the photos in them — comes from the phone's own copy of the index, and so do tag and name suggestions and the “already on these photos” list in the tagging sheet. All of those are current the moment you change something. Only the answers to a typed search are held and reused, for as long as you chose in the account screen. The filter lists are asked for once and kept until a sync actually writes something. Swipe down on the grid to reload and start a sync at the same time; if a sync is already running the swipe is ignored. Clear cache in the account screen throws away every held answer; the phone's copy of the index is not part of that and is left alone, so browsing keeps working.
Every filter group is folded by default and keeps how you left it between visits, so a group can look empty when it is only closed. The badge on the heading counts how many of that group's own filters are on. Camera make was removed on purpose: the model already reads as “Nikon Z6”. A group with more than 50 values shows a small search field instead of its values: tap it for the most frequent ones, or type to find the rest.
Expected. An edit saved as a copy is a new photo to the app, read from scratch, and it does not carry the tags, people or wording of the original — gallery editors drop them when they save. A filter or a crop can also change what the photo is read as: a kiss in the woods may still be found by “kiss” and no longer by “woods”. Search for what the edited photo shows, or tag it again.
Browsing, folding groups, tag and name suggestions and the “already on these photos” list all work offline, from the phone's copy. Typed searches and refreshing the filter lists need the index, and tags you save wait on the phone until the next sync can carry them up.
Still stuck? Account and plan questions go to opensolr.com/contact; problems with the app itself belong on GitHub issues.