{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Bluvy Tube-specific per-app appearance preferences for one account, written to that account's own repo at rkey `self`. Not required or validated by the PDS or any other AT Protocol app — Bluvy Tube reads this back itself at login to server-render the correct theme and remove the theme flash-of-unstyled-content. Each Bluvy app keeps its own independent record in its own namespace; this one is Bluvy Tube's. See App\\Service\\AppearanceService in the Bluvy Tube source for the writer.",
"key": "literal:self",
"record": {
"properties": {
"accent": {
"description": "Logo-derived accent override for primary CTAs. Absent means the Bluvy Blue signature (#185DFF).",
"enum": [
"bluvy-blue",
"bluvy-cyan",
"bluvy-deep"
],
"type": "string"
},
"breakReminderMinutes": {
"description": "Wellbeing reminder: minutes of actual playback in vertical swipe feeds before Bluvy Tube interrupts with a take-a-break prompt. Absent means 30. There is intentionally no value that disables the reminder; unknown values are read back as 30.",
"enum": [
15,
30,
45,
60,
90,
120
],
"type": "integer"
},
"darkStyle": {
"description": "Dark-mode depth. Absent means 'dim' (the default #070D1C ramp); 'black' is the opt-in near-black OLED ramp (#05070D, never pure #000000).",
"enum": [
"dim",
"black"
],
"type": "string"
},
"feedMode": {
"description": "Primary feed navigation and video layout mode. 'youtube' is the standard grid of thumbnails; 'immersive' is the continuous full-screen vertical swipe feed. Absent means 'youtube'.",
"enum": [
"youtube",
"immersive"
],
"type": "string"
},
"fontFamily": {
"description": "UI font family. Absent means the native system stack.",
"enum": [
"system",
"inter"
],
"type": "string"
},
"fontSize": {
"description": "Root text size. Absent means 'default' (100%).",
"enum": [
"small",
"default",
"large"
],
"type": "string"
},
"linkAppView": {
"description": "Which AT Protocol AppView web frontend external post/profile links (e.g. 'view original post') open through. Absent means 'mu' (Mu.social, Bluvy Tube's default).",
"enum": [
"bluesky",
"mu",
"blacksky"
],
"type": "string"
},
"mode": {
"description": "Colour-mode axis. 'system' follows the OS prefers-color-scheme.",
"enum": [
"light",
"dark",
"system"
],
"type": "string"
},
"palette": {
"description": "Ecosystem palette. Absent means the Bluvy Tube default palette (logo-derived). The others are opt-in alternates.",
"enum": [
"bluvy",
"bluesky",
"blacksky",
"mu"
],
"type": "string"
},
"updatedAt": {
"description": "Client-declared timestamp of the last change.",
"format": "datetime",
"type": "string"
}
},
"required": [
"mode",
"updatedAt"
],
"type": "object"
},
"type": "record"
}
},
"id": "app.bluvy.tube.preferences",
"lexicon": 1
}