Skip to main content
Vixlo 0.1

Nothing decides for you

Vixlo measures a great deal — sharpness, faces, exposure, bursts, look-alikes — and this page is the rule that keeps it all advisory: the app counts, compares and remembers, and you decide. Read it when a frame carries a mark, or a sheet offers to accept fifty proposals at once, and you want to know what has been written.

The pass is frozen while you walk it​

When you start a pass — choose a state chip, a group, a person, a search — Vixlo freezes the ordered list of frames that pass is. Deciding on a frame can make it stop matching what built the list (a Take while you are walking Undecided), but it stays in the list, and → keeps walking exactly the frames you started with. The counts and Frames update live; what Previous and Next walk does not shuffle.

A pass can grow at its end: a frame that comes to match it while you are in it — a new proposal, a frame you cleared back to Undecided — is added after everything already there, with your cursor where it was. The pass is built again only when you change the state, a chip, the grouping, the sort or the search. Quit and reopen, and the pass comes back whole, on the frame you were on. The pass holds still covers it.

One way to write a decision​

Among the gestures that write a Take, Hold, Reject or Undecided are a decision key, the three buttons on the pass line, the decisions in the menu bar, the Take beside a member of a stack, Restore all in the bin, Accept on a proposal (the button, or ⌘↩), ↩, ⇧↩, H and ⇧H on a proposed pair while Compare is on screen, Import old decisions and Import this library… when you bring decisions across, and Undo and Redo, which take back or replay what one of those wrote. Every one of them is something you do. Nothing that ranks, compares, groups or proposes can write a decision: a score cannot become a Reject, and a grouping cannot become a Take.

Every way of looking is the same: Groups, a session, a search, a person's circle, a place, the gallery. Each narrows or arranges what you see and changes nothing about any frame.

A key does not decide about frames you cannot see. Compare's pair keys — ↩, ⇧↩, ⇧H, H as Hold both, and ⌘↩ as the pair's Accept — answer only while Compare is on screen with a proposed pair in it, and C again, or Esc with nothing else open, leaves Compare. Press C and then G, and Compare waits behind the contact sheet: H holds only the frame with the orange ring, ↩ does what it does in Frames, ⌘↩ accepts a group, and ⇧↩ and ⇧H do nothing. Under the Space full screen, a decision key decides about the one photograph on screen. A proposed pair in Compare has the keys.

What a proposal is​

Proposals are the one place the app says what it would do. A proposal is a mark and a reason, and it sits on the frame until you act on it. On a frame that is in no stack, press ↩ to confirm its proposal. On a frame in a stack, ↩ opens or closes the stack rather than confirming the one frame; answer that frame with T, H or R. Inside an open Stack Resolver, ↩ accepts the whole stack as proposed and writes those decisions in one step; the resolver's footer shows an Accept N button for it, and ↩ closes the resolver only when there is nothing left to accept. However you answer, the decision is written through the same path as a keystroke. Decide the other way with a key and the proposal is simply overridden; the app records what it had said beside your decision, so the disagreement is kept.

Two things the engine will not do: it never proposes anything about a frame you have already decided, and where it could not measure what a rule needs, it says so and puts the frame on the Look at these list with the reason, rather than assuming it is fine. Nothing on that list is ever accepted in bulk. What a proposal is and Accepting, or deciding for yourself cover the rest.

An Accept is one step you can take back​

Accept for a stack, a session or the whole card writes every one of those decisions as one entry in the undo history. The message says how many — 37 frames accepted — with its own Undo, and ⌘Z puts all of them back in one step. Above a number you set in the criteria pane — Accept over this many asks first, fifty unless you change it — an Accept asks first, with the counts and what it leaves out.

The message after an Accept on a group in Frames, naming the count, with Undo

The sentence under every comparison​

Where the app states a measured comparison outright — the reasons card on a proposal, Compare, and the Stack Resolver — it carries the same line, word for word: Measured from the frames · no decision is changed automatically.

The reasons card on a proposed frame, with its measured line

When the measurements cannot separate two frames, the advisory says nothing at all.

What the app learns from you​

Proposals learn from your decisions. What they learn is a log of numbers about each decided frame and which way you went, kept in Vixlo's own folder on this Mac. A frame is named in it by a fingerprint of its contents, and no person's name is in it. A note you write on a decision never enters that log; only its reason chips do, and the card says so: Your reasons are counted — the note itself is yours and never leaves this Mac. Switching Learn from my decisions off stops it; Forget my taste… deletes the log and the ranking fitted from it after a counted confirmation, and leaves every decision you made exactly where it is. Learning from your decisions has the detail.

In Vixlo 0.1

The log can hold a file path, when a frame's id is one. A photograph with no fingerprint yet, such as one you decide in the first moments after an import, is named by its frame's id instead, and the line is marked as named that way. For a frame a card or folder import brought in, that id is itself made from a fingerprint of its contents and holds no path. For a frame an older build imported, or one a rebuild of the index found, it is the path its file had when it was scanned, file name included. A frame that sat in a burst when you decided it also carries the burst's name, made from the id of the burst's first frame: a fingerprint for a frame imported now, a path for an older one. The log stays on this Mac, and Forget my taste… deletes it.