What a library is on disk
A library is a folder you chose, and everything the library needs is inside it. You can read it in the Finder, move it to another drive, or back it up as one thing. This page says what is in the folder, which parts carry your work, and what to do if the index is lost.
The folder
Make a library and Vixlo lays this out at the place you chose:
Alpine week/
library.sqlite3 the index — decisions, ratings, labels, favourites, the undo journal, the open pass
library.json the library's own record — its name if you renamed it, when it was made and last opened
workspace-state.json how the page was arranged when you left it
Originals/ the verified copies of your photographs, both files of a RAW+JPEG pair, and an XMP file beside each one you have touched
Trash/ made with every library; nothing is put in it
Exports/ made with every library; Export asks you where to write each time
The index records where each photograph is relative to the folder, so you can move the whole folder and open it from its new place with Open existing library….
Originals/ is one flat folder. A camera set to RAW+JPEG writes two files for each frame; Vixlo shows one frame, with the RAW as its master, and copies both under the same name. When a file's name is already taken by a different photograph, it is copied beside the first as DSCF0100-2.RAF, its JPEG as DSCF0100-2.JPG, and what you later write about it goes into DSCF0100-2.xmp. A name belongs to one photograph whatever its extension, because the XMP file takes the file's name without its extension: a JPEG-only camera's DSCF0100.JPG is copied as DSCF0100-2.JPG rather than beside another camera's DSCF0100.RAF, so the two never share one. A pair never splits. Clips, XMP files beside the photographs on the card, and other files Vixlo does not copy stay on the card. While an import runs, and if it is cancelled or interrupted, a hidden file, .vixlo-import-manifest.json, sits there too; an import that goes through every file removes it.
As you work, Vixlo adds more:
People/ the faces it found, how they group, and the names you gave — index.json and faceprints.bin
Search/ what each frame is of, for search by words
Searches/ your saved searches — saved.json
Places/ places and journeys from GPS, and any names looked up for them
Sets/ brackets and panoramas, kept whole
looks.json the simulations you saved on the edit page
Proposals/
policy.json the criteria you set for this library, so they travel with the shoot
adjustment.json one number: how much harder or softer this shoot was culled than usual
measurements.json what the app read off each photograph — sharpness, faces, exposure
measurements.json holds numbers about each photograph, and no pixels and no thumbnail. Each entry is filed under the frame's id. For a photograph copied in from a card or a folder, the id is a fingerprint of its contents. A frame an older build scanned in has the path its file had when it was scanned, usually a path on the card ending in the file's name, and one a rebuild found has a path inside Originals. Nothing the app measures is a decision.
What is yours, and what is derived
These carry your work, and nothing else in the folder can make them again:
Originals/— the photographs, byte for byte as they came off the card.- The XMP files beside them. The moment you decide, rate, label, keyword, caption, note or develop a frame, Vixlo writes a small
.xmpfile next to it, named after it —DSCF1234.xmpbesideDSCF1234.RAF. It carries the decision (Take, Hold or Reject, and when it was decided), the rating, the colour label, keywords and caption, the note on the decision and its reasons, and every develop setting. A frame you have never touched has no XMP file. A frame brought inside by scanning its card again gets its XMP file when its copy lands, if it carried a decision, rating, label, keywords, caption or note. Other tools that read XMP — Lightroom, Bridge, Capture One — see the rating, the label, the keywords and the caption in their standard places. - What you made inside Vixlo: the names you gave in People and the faces you marked Not a face (both in
People/index.json), your saved searches (Searches/), the simulations you saved (looks.json) and the criteria you set (Proposals/policy.json). Delete one of these and what it held is gone; a new scan finds the faces again, but not their names. library.json— the library's own record, with the name you gave it. It is what makes the folder a library: without it, Open existing library… will not open the folder.
The rest is derived. library.sqlite3 is an index over the folder, kept because it makes a ten-thousand-frame library fast to open and search, and a rebuild makes it again from the XMP files — all but the few things only the index holds, listed below. Search/, Places/, Sets/ and Proposals/measurements.json are measured from the photographs, and Vixlo measures again whatever is missing.
Some things are about you or this Mac rather than about a shoot, and are not in the folder at all: your keys, your export presets and the models you fetched. They are on What lives outside the library.
Rebuilding the index
If library.sqlite3 is damaged, or you want the index to say exactly what the folder says, rebuild it from the folder: close the library, open its row's More menu on the launch screen and choose Rebuild the index…. Decisions, ratings, colour labels, keywords, captions, notes and adjustments come back from the XMP files. The undo history and the pass you had open do not, and neither do favourites: the heart on a frame is kept in the index alone, the one mark not written to the XMP file. The old index is never deleted: it is kept beside the new one as a backup. Rebuilding the index walks through the sheet and what it reports.
The rebuild sheet, and the notice after an automatic rebuild, call undo history the one thing that lives only in the index. Favourites live only there too, and a rebuild leaves no frame a favourite. If yours matter, give those frames a colour label first: it is written to the XMP file, so it comes back.
When the index is missing
Open a library whose library.sqlite3 is gone — deleted, lost to a sync, skipped by a backup — and Vixlo rebuilds it before showing you the shoot, rather than opening onto a library with no decisions in it. When you come back to the launch screen, a notice at its top says what happened — “Alpine week” had no index, so it was rebuilt from the folder. — followed by the sheet's two promises. Dismiss closes it.