at.kotoba.prefs
Single overwritten record: per-user UI/drill preferences. The payload is an opaque JSON string so preferences expand without a lexicon change. rkey is literally `self`.
Details · record, key literal:self
| Kind | record |
|---|---|
| Record key | literal:self |
| Authority | kotoba.at |
| Indexed |
Showing version bafyreig3nuflaeupr4aqas5xmmjtcqeb2c6oyxsw3ytugzitsb26vkyb44. Show the latest
Checks
Validunlimited-stringdefs.main.record.properties.settingsNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Single overwritten record: per-user UI/drill preferences. The payload is an opaque JSON string so preferences expand without a lexicon change. rkey is literally `self`.",
"key": "literal:self",
"record": {
"properties": {
"settings": {
"description": "Stringified JSON the app owns. Current preference keys: direction (genko|hanko|ma), glyphScale, candCount (3|4|6), showTimer, dark, skewToFailingMode, autoAdvanceSecs, furigana (below|ruby), fontVariety (off|on), writingMode (horizontal|vertical). It also carries two non-preference markers, which ride this record because it is the only schema-free singleton: onboardedSeeds (every seed pack id the account has ever onboarded) and newestAppVersion (forward-only high-water mark of the newest app build that loaded the account). Unknown keys are round-tripped rather than dropped, so an older build does not silently wipe a newer one's — within bounds: the capture is capped (key count, serialized length, per-key name screens) and anything over is dropped with a warning. The lexicon deliberately does not constrain the shape.",
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"updatedAt",
"settings"
],
"type": "object"
},
"type": "record"
}
},
"id": "at.kotoba.prefs",
"lexicon": 1
}