LockTime

Notes

The screenshot we decided not to take

A screen history is mostly the same screen, over and over. Here is how LockTime tells a changed screen from a still one — 36,864 samples at a time.

A grid of identical pale squares with a single one shifted out of line.

Recording your screen once a second sounds like a storage problem. It is really a sameness problem. Most seconds look exactly like the second before them, and a history made of those is worse than a smaller one: it is slower to search, longer to scroll, and it buries the moments you actually wanted.

So before LockTime keeps anything, it asks whether the screen has changed at all. The comparison runs on a 192×192 grayscale reduction of the display — 36,864 samples — with a tolerance of two levels, so compression noise is not a change and a repainted window is.

Why a threshold does not work

The obvious rule is a magnitude: keep the frame if more than N samples moved. We measured what actually moves on a desktop that is sitting still.

  • Moving the pointer across the screen: 4 samples.
  • The menu-bar clock ticking over a minute: 7 samples.
  • Typing a single word into a document: 23 samples.

Out of 36,864. To ignore a clock, N would have to sit above 7; to ignore a blinking cursor and a clock and a progress spinner together, higher still. And the sentence you just typed is 23. A threshold tuned to throw away noise throws away work, and the two are the same size.

Flicker instead

The default rule is not how much moved but where. LockTime learns which cells of your screen are restless — a caret, a spinner, an animating thumbnail — and stops counting them. A cell that has moved on three separate checks is considered settled into restlessness, and from then on only the rest of the screen can trigger a capture.

The learning has a ceiling: a check only teaches LockTime anything if at most twelve cells moved. Turn a page, switch windows, scroll a document, and thousands of cells move at once — that check teaches nothing, so a real change can never train the app into believing your whole screen is noise.

This is lossless in the way that matters. Nothing you did is dropped. The minutes you spent reading one page cost one screenshot instead of sixty.

What you can change

Three modes sit in Settings. Any change keeps a frame whenever a single sample moves. Ignore what moves on its own is the default described above. Only obvious changes waits for a substantial part of the screen to differ, for people who want a sparse record.

Alongside them: an interval from one second to ten minutes, and a switch for capturing when you change applications, so a window you visited for three seconds still leaves a trace.

All notes
Download 0.1.6 · 6.6 MB macOS 14 or later · Apple silicon and Intel · Free while it is early.