Skip to main content

Module person

Module person 

Expand description

Records in the person’s own room: data that belongs to one person and follows them across their devices, never to a collaborator.

A shared room’s records are its members’. Some of an app’s state is nobody’s but the person’s — what they watched, the words they taught the keyboard, where they stopped reading — and is still data rather than a preference: it grows, it has history, edits to it are undone. That state is a record like any other, kept in the person’s own room ([collab_types::person_room]): a room whose id is derived from the person’s root key and whose members are, by that derivation, exactly the devices that root certified. Nobody can be invited into it.

An app holds the person’s records beside the record it shows, whatever room that one is in. PersonRecords is where they are kept on this device for one app; PersonRecord is one of them, opened, edited with attribution and undo, and synced on its own route (PersonRecord::history_owner) to the person’s other devices.

Without a root identity there is no person room: the records are kept on this device only, in a scope no route can name.

Structs§

PersonRecord
One of the person’s records, open. Edits are attributed to the person, recorded as undo steps of their own and synced on the record’s route.
PersonRecords
Where one app keeps the person’s records on this device. Cloning shares the open records.

Functions§

record_id
The id of the person’s record of kind for an app: one per kind, the same on every device, so every device opens the same record.
scope_of
The room the person author names, as a record scope: their person room when author is a root identity, else a device-only scope.