Saving & Recovery¶
Saving¶
| Action | Shortcut |
|---|---|
| Save | Cmd+S / Ctrl+S |
| Save As… | Cmd+Shift+S / Ctrl+Shift+S |
File names¶
Save dialogs suggest a versioned name, following SLEAP's convention:
- The first save of a new project suggests
labels.v001.slp. - Save As… suggests the next version of the current name:
labels.v001.slp→labels.v002.slp. A name with no version number gets one:experiment.slp→experiment.v001.slp. - Save on a project that already has a file writes to that same name — it never bumps the version.
You can always type a different name.
Where it writes¶
What Save does depends on where you're running:
Save writes back to the project's path on disk, like any native app. Save As… opens a native file dialog.
File ▸ Reveal Project in File Manager shows the file in Finder / Explorer / your file manager.
If you opened the file through the file picker, the page holds a writable handle to it and Save writes back to that same file in place. If you opened it by drag-and-drop — which yields no handle — Save falls back to a Save-As prompt. Save As… always prompts, and later saves go to the file you picked.
The browser will ask for permission the first time it writes.
These browsers can't write to a file on disk, so Save and Save As…
both download a new copy of the .slp to your downloads folder. The file
you opened is not changed.
Because the app can't tell whether the download landed, it keeps its crash-recovery draft after a save here.
Large embedded packages
A .pkg.slp with a lot of embedded image data can exceed what fits in
memory at once. The desktop app detects this and switches to a streaming
writer that copies image blobs disk-to-disk rather than materializing the
whole file, so size is not a wall. It is slower over a network share, so
saving a very large package to a mounted drive takes a while.
Crash recovery¶
The app keeps a draft of unsaved work in the background — a debounced, imageless snapshot written a beat after you stop editing. No toast, no dialog, no memory cost for pixels.
- Browser — drafts go to the origin private file system (OPFS). Every browser project gets one, because browser tabs die.
- Desktop — drafts go to an app-local data directory.
If the app stops with unsaved work, the next launch shows a Restore unsaved work? card on the welcome screen listing the recoverable drafts. Recovery is always something you click; it never pops up on its own and never fires twice. Starting a new project or opening another one just leaves the draft alone.
A draft is a net, not a save
On the desktop, a draft write never marks the project clean — the file on disk is still stale until you press Cmd+S. Drafts protect you from crashes, not from forgetting to save.
Unsaved-work guards¶
The app will not let you quietly lose labels:
- Closing the window or quitting with unsaved changes prompts first
- Leaving a skeleton edit half-finished prompts first
- The installer refuses to replace a running copy of the desktop app
Where preferences live¶
File ▸ Open Preferences Directory… (desktop) opens the folder holding settings, transcode cache, and drafts. File ▸ Clear Video Transcode Cache… clears cached transcodes from there.