Quest system state for cross-device sync (dismissals, nudge timing, visited routes). Singleton record (rkey: self), overwritten via putRecord. Client-written (no backend signing). Distinct from net.anisota.chronicle.fieldwork (immutable, backend-signed completion records).
any
Any valid record key
Properties
counters
unknown
Optional
Reserved for future quest progress counters. Object mapping counter ids to values.
dismissed
unknown
Optional
Object mapping dismissed quest ids to the ISO datetime they were dismissed. Dismissed quests are excluded from recommendations and nudges until undismissed.
lastNudgeAt
string
datetime
Optional
When a quest nudge was last shown (nudges are spaced at least a day apart)
lastNudgeQuestId
string
Optional
Which quest the most recent nudge was about
pinnedQuestId
string
Optional
Quest the player has pinned to keep in view
retroSweepAt
string
datetime
Optional
When the retroactive completion sweep last ran (throttles the sweep to once per day)
retroSweepVersion
integer
Optional
Version of the retroactive sweep that armed retroSweepAt. When it doesn't match the client's current sweep version the throttle is treated as stale and the sweep runs once more, so a throttle armed by an earlier (buggy) sweep can't lock out backfill.
snoozedUntil
string
datetime
Optional
Suppress quest nudges until this time
updatedAt
string
datetime
Required
When this state snapshot was taken
visitedRoutes
unknown
Optional
Object mapping visited app routes (e.g. '/chronicle') to the ISO datetime of the first tracked visit. Drives route-based quest detection.
View raw schema
{
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"updatedAt"
],
"properties": {
"counters": {
"type": "unknown",
"description": "Reserved for future quest progress counters. Object mapping counter ids to values."
},
"dismissed": {
"type": "unknown",
"description": "Object mapping dismissed quest ids to the ISO datetime they were dismissed. Dismissed quests are excluded from recommendations and nudges until undismissed."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "When this state snapshot was taken"
},
"lastNudgeAt": {
"type": "string",
"format": "datetime",
"description": "When a quest nudge was last shown (nudges are spaced at least a day apart)"
},
"retroSweepAt": {
"type": "string",
"format": "datetime",
"description": "When the retroactive completion sweep last ran (throttles the sweep to once per day)"
},
"snoozedUntil": {
"type": "string",
"format": "datetime",
"description": "Suppress quest nudges until this time"
},
"pinnedQuestId": {
"type": "string",
"description": "Quest the player has pinned to keep in view"
},
"visitedRoutes": {
"type": "unknown",
"description": "Object mapping visited app routes (e.g. '/chronicle') to the ISO datetime of the first tracked visit. Drives route-based quest detection."
},
"lastNudgeQuestId": {
"type": "string",
"description": "Which quest the most recent nudge was about"
},
"retroSweepVersion": {
"type": "integer",
"description": "Version of the retroactive sweep that armed retroSweepAt. When it doesn't match the client's current sweep version the throttle is treated as stale and the sweep runs once more, so a throttle armed by an earlier (buggy) sweep can't lock out backfill."
}
}
},
"description": "Quest system state for cross-device sync (dismissals, nudge timing, visited routes). Singleton record (rkey: self), overwritten via putRecord. Client-written (no backend signing). Distinct from net.anisota.chronicle.fieldwork (immutable, backend-signed completion records)."
}