The localStorage keys, and the two load-bearing distinctions: saveDoc vs putDoc, and deleteDoc vs dropDoc.
| Key | Holds |
|---|---|
flashcc:v3:index | DocSummary[] — the grid and the search blob |
flashcc:v3:doc:<id> | One full Doc, media included as base64 |
flashcc:v3:index-version | Retires the one-shot summary backfill |
flashcc:v3:fonts | Uploaded faces as data URLs |
flashcc:v3:onboarded / :prefs | Onboarding state and answers |
flashcc:v1:posts | The entire pipeline in one key |
flashcc:v1:tombstones | Deletions, both kinds |
flashcc:v1:sync-cursor | Last successful sync — read only for the "Synced 3m ago" label |
saveDoc versus putDoc is the load-bearing distinction. saveDoc restamps updatedAt; putDoc writes verbatim. Sync applies remote records through putDoc, because restamping a record the moment it arrives makes the local copy look newer than the server’s — the next merge pushes it straight back and the two sides take turns overwriting each other forever.
deleteDoc versus dropDoc is the same shape of decision. deleteDoc removes and records a tombstone. dropDoc removes without one, for the only two cases that are not deletions: applying a remote delete, and clearing the machine on sign-out. Tombstoning either would push a delete back up for work that is very much alive on the account.