pet.trezy.devicePreference

Repository @trezy.pet did:plc:ollch4g7tes2reb5eceiwuol namespace authority
Details · record, key any
Kindrecord
Record keyany
Authoritytrezy.pet
Indexed

Record

record · key any

Properties

A hash of a few coarse, stable device traits, used ONLY to re-find this row after the browser's local storage has been cleared — see src/lib/device.ts. ⚠ IT IS BEST-EFFORT AND MUST NEVER BE TREATED AS AN IDENTITY. It is matched only when exactly one row matches, because two identical phones on one account produce the same hash and silently merging them would change the typeface on a device the player never touched.

  • maxLength: 64

label

string

A coarse, human-readable name for the device list — "Chrome on macOS", never a full user-agent string. Somebody cleaning up stale entries has to be able to tell which row is their old phone; unlabelled rows make the delete button unanswerable. Coarse on purpose: browser family and platform family only, which is enough to recognise and too little to single anybody out.

  • maxLength: 60

lastSeenAt

string · datetime

When this device last opened the game, so a stale row can be recognised and deleted. This is the one genuinely time-revealing field in the game, which is why it exists only for overridden devices and only inside the space.

typeMode

requiredstring

Required here, unlike on the account row: a device row IS the override, so one without a mode says nothing and should have been deleted instead.

  • knownValues: pixel | softer | system

updatedAt

requiredstring · datetime

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Everything the caller's account knows about how to present the game: the account-wide default, and every device that has been given its own text style. Takes no DID — it answers for whoever is authenticated and nobody else. ⚠ IT RETURNS THE WHOLE PICTURE RATHER THAN AN ANSWER, deliberately: which of these applies depends on which device is asking and what its browser still remembers, and that reconciliation lives in one tested place on the client (src/lib/preferences.ts) instead of being half he