settings.json
Some settings are about the app; some are about the photographs. The second kind lives here, at the library root, so it travels with the library and stays readable — and editable — in a text editor with Winder nowhere in sight.
{
"version": 1,
"scan": {
"dividerFallbackPx": 140
},
"output": {
"quality": 95,
"trimRebate": true
},
"gear": {
"film": "kodak-gold-200",
"camera": "pentax-17"
}
}
Every library gets this file, on defaults, the moment it is created — it is the first thing a curious owner opens to see what Winder keeps, and a file that only appears once you change something is a file nobody knows about.
scan
How Winder should cut when it cannot detect the divider automatically. Source dimensions are read directly from each decoded image.
| Key | Default | Notes |
|---|---|---|
dividerFallbackPx | 140 | Bar width assumed when detection fails. Zero is allowed |
output
| Key | Default | Notes |
|---|---|---|
quality | 95 | JPEG quality. One of two presets: 95 (High) or 80 (Medium) |
trimRebate | true | Shave the dark border off each frame after the cut |
Quality is two presets rather than a number, because the difference between 91 and 94 is not something anyone can see on a scan, while the difference between "keep the grain" and "keep the file small" is. Any other number is read as whichever preset it is nearer, and the snapped value is what gets written back the next time anything is saved.
gear
The film and body the last new roll was given, as catalog ids. People shoot the same stock through the same camera for months, so the next new roll opens on that answer instead of on an empty form.
| Key | Notes |
|---|---|
film | Film catalog id, e.g. kodak-gold-200. Absent when the last roll used Other |
camera | Camera catalog id, e.g. pentax-17. Same |
Ids rather than names: a catalog entry that goes away simply stops being remembered. This is written when a roll is created, never when one is edited — editing an old roll is archaeology, not a statement about what is in the camera now.
Hand-editing
Encouraged. Winder reads what it recognises and defaults the rest, so a typo costs the key it is in and nothing else. A file that won't parse at all falls back to defaults across the board, and is rewritten cleanly on the next change in the app.
Winder re-reads this file on every scan, which happens each time the app resumes. A fallback width changed on the desktop is what the phone cuts with after the next time you open it.
What is not here
Anything about the app rather than the photographs stays on the device, in ordinary platform preferences:
- Theme and language
- App icon
- How many columns the library stream shows — a phone and a Mac reading one library should each keep their own
- Developer mode
- Where the library is, and the security-scoped bookmark that gets back into it. That one can't live in the library for the obvious reason: a note saying where the vault is has nowhere to live but outside it
Upgrading from an older version
The divider fallback width, output quality and remembered gear used to live in device preferences. The first library opened after upgrading is seeded from them. Obsolete scan width and height values are ignored because Winder now reads those dimensions from each image.
The old preferences are never cleared. If your library was unreachable at that moment — an iCloud Drive that hadn't mounted — the seed is still there for the next library that needs it.
Updated Aug 8, 2026
