{
  "schemaVersion": 1,
  "moduleCatalog": {
    "catalogVersion": 3,
    "groups": [
      {
        "key": "app",
        "labels": {
          "zh-CN": "应用外观",
          "zh-TW": "應用外觀",
          "en": "App appearance"
        }
      },
      {
        "key": "reading",
        "labels": {
          "zh-CN": "阅读外观",
          "zh-TW": "閱讀外觀",
          "en": "Reading appearance"
        }
      },
      {
        "key": "typography",
        "labels": {
          "zh-CN": "字体",
          "zh-TW": "字體",
          "en": "Fonts"
        }
      }
    ],
    "modules": [
      {
        "key": "palette",
        "group": "app",
        "minSchemaVersion": 1,
        "labels": {
          "zh-CN": "应用配色",
          "zh-TW": "應用配色",
          "en": "App colors"
        }
      },
      {
        "key": "icons",
        "group": "app",
        "minSchemaVersion": 1,
        "labels": {
          "zh-CN": "界面图标",
          "zh-TW": "介面圖示",
          "en": "Interface icons"
        }
      },
      {
        "key": "pageBackground",
        "group": "app",
        "minSchemaVersion": 1,
        "labels": {
          "zh-CN": "页面背景",
          "zh-TW": "頁面背景",
          "en": "Page background"
        }
      },
      {
        "key": "navigation",
        "group": "app",
        "minSchemaVersion": 1,
        "labels": {
          "zh-CN": "导航装饰",
          "zh-TW": "導覽裝飾",
          "en": "Navigation decoration"
        }
      },
      {
        "key": "launchScreen",
        "group": "app",
        "minSchemaVersion": 4,
        "labels": {
          "zh-CN": "启动图",
          "zh-TW": "啟動畫面",
          "en": "Launch screen"
        },
        "descriptions": {
          "zh-CN": "App 冷启动时跟随主题显示的静态图片；首页准备好后立即退出，不强制停留。",
          "zh-TW": "App 冷啟動時跟隨主題顯示的靜態圖片；首頁準備好後立即離開，不強制停留。",
          "en": "A theme-aware static image shown during cold launch; it exits as soon as the home screen is ready, with no forced dwell time."
        }
      },
      {
        "key": "readerPaper",
        "group": "reading",
        "minSchemaVersion": 2,
        "labels": {
          "zh-CN": "阅读纸张",
          "zh-TW": "閱讀紙張",
          "en": "Reading paper"
        }
      },
      {
        "key": "paragraphReview",
        "group": "reading",
        "minSchemaVersion": 2,
        "labels": {
          "zh-CN": "段评装饰",
          "zh-TW": "段評裝飾",
          "en": "Paragraph review decoration"
        }
      },
      {
        "key": "openingIndicator",
        "group": "reading",
        "minSchemaVersion": 2,
        "labels": {
          "zh-CN": "加载动画",
          "zh-TW": "載入動畫",
          "en": "Loading animation"
        }
      },
      {
        "key": "informationBars",
        "group": "reading",
        "minSchemaVersion": 2,
        "labels": {
          "zh-CN": "信息栏样式",
          "zh-TW": "資訊列樣式",
          "en": "Information bar styling"
        },
        "descriptions": {
          "zh-CN": "可调整字体、字号、字重、颜色、透明度和密度，并提供有限的内容预设；保留设备位置与边距，应用时默认不勾选。",
          "zh-TW": "可調整字型、字號、字重、顏色、透明度和密度，並提供有限的內容預設；保留裝置位置與邊距，套用時預設不勾選。",
          "en": "Adjusts font, font size, font weight, color, opacity, and density, with limited content presets; preserves device position and margins, and is not selected by default when applying."
        }
      },
      {
        "key": "commentCard",
        "group": "reading",
        "minSchemaVersion": 3,
        "labels": {
          "zh-CN": "评论卡片",
          "zh-TW": "評論卡片",
          "en": "Comment cards"
        }
      },
      {
        "key": "fonts",
        "group": "typography",
        "minSchemaVersion": 2,
        "labels": {
          "zh-CN": "字体",
          "zh-TW": "字體",
          "en": "Fonts"
        }
      }
    ]
  },
  "iconSlots": [
    "home",
    "library",
    "discover",
    "ai",
    "profile",
    "back",
    "search",
    "more",
    "close",
    "forward",
    "settings",
    "refresh",
    "add",
    "share",
    "delete",
    "check",
    "bookmark",
    "catalog",
    "readAloud",
    "locate",
    "play",
    "pause",
    "stop",
    "previous",
    "next",
    "rewind",
    "fastForward",
    "speed",
    "timer",
    "volume",
    "volumeOff",
    "expand",
    "collapse",
    "remove",
    "filter",
    "sort",
    "layoutGrid",
    "layoutList",
    "download",
    "upload",
    "folder",
    "createFolder",
    "moveFolder",
    "edit",
    "copy",
    "note",
    "highlight",
    "history",
    "help",
    "info",
    "cloud",
    "sync",
    "save",
    "restore",
    "link",
    "palette",
    "font",
    "image",
    "device",
    "key",
    "extension",
    "network",
    "visibility",
    "visibilityOff",
    "lightMode",
    "darkMode",
    "autoMode",
    "swap",
    "warning",
    "offline",
    "favorite",
    "selectAll",
    "security",
    "mail",
    "chat",
    "logout",
    "schedule",
    "tag",
    "stats",
    "award"
  ],
  "artworkSlots": [
    "pageBackground",
    "navigation"
  ],
  "uiCoverage": {
    "description": "UI usage guidance, not additional manifest keys. Theme assets supply colors and artwork; shared app components own geometry, spring motion and glass/solid behavior.",
    "settingsSubpages": {
      "description": "Settings rows and section headings use fixed frames for themed artwork and system fallback. Only artwork scales; text starts, row spacing and trailing controls do not move.",
      "actions": {
        "glassEffectStyleAndOpacity": "palette",
        "appFontAndTextSize": "font",
        "readingFont": "library",
        "epubFont": "catalog",
        "customFonts": "folder",
        "libraryLayout": "layoutGrid",
        "floatingNavigationScreenAndPower": "device",
        "volumeKeyPageTurn": "volume",
        "resumeReading": "restore",
        "readerTopInformation": "settings",
        "language": "network",
        "autoSave": "save",
        "inlineExplanation": "info",
        "enterSetting": "forward",
        "feedback": "chat",
        "privacyAndLicenses": "security",
        "changelog": "history",
        "activities": "tag",
        "welcomeGuide": "library",
        "checkUpdates": "download"
      },
      "fallback": "Missing slots or unreadable images retain the original glyph inside the same frame. App/vendor logos retain their brand assets. Explanations open from a small info action; current values remain visible."
    },
    "readerSettings": {
      "description": "Text, layout, theme, paging, chapter-title, coloring and listening menus use caller-owned icon frames. Artwork and system fallbacks keep the same title and control columns; existing V1 keys and reader palettes remain independent.",
      "iconFrameDp": 36,
      "accessoryColumnDp": 60,
      "actions": {
        "fontChoiceAndColoring": "font",
        "chapterProgress": "catalog",
        "tapZoneGrid": "layoutGrid",
        "bookmarks": "bookmark",
        "paragraphComments": "chat",
        "autoPageTurnAndSleep": "timer",
        "systemSpeech": "device",
        "cloudSpeech": "cloud",
        "credentials": "key",
        "enter": "forward",
        "selectedChoice": "check",
        "explanation": "info"
      },
      "fallback": "Missing or unreadable artwork and precise glyphs without a V1 semantic slot keep the original symbol inside a fixed frame. Selection, loading and retry do not move text; iconScale affects artwork only. Font samples and reader paper previews retain their own content."
    },
    "officialCloudSync": {
      "status": "planned",
      "description": "Official cloud sync UI is in design. These existing V1 slots are reserved by meaning for its future integration; this does not claim the feature is live.",
      "actions": {
        "cloudEntry": "cloud",
        "synchronize": "sync",
        "bookSources": "discover",
        "bookshelf": "library",
        "readingPositionAndBookmarks": "bookmark",
        "notes": "note",
        "highlights": "highlight",
        "readingHistory": "history",
        "sourceLoginState": "key",
        "syncDevices": "device",
        "download": "download",
        "export": "share",
        "restore": "restore",
        "deleteReadingData": "delete",
        "back": "back",
        "openDetails": "forward",
        "close": "close",
        "confirm": "check",
        "help": "help",
        "information": "info"
      },
      "stateOwnership": "Success, offline, conflicts, errors, loading and quota are real app states. Do not replace their meaning with a static decorative status image."
    }
  },
  "limits": {
    "compressedBytes": 10485760,
    "uncompressedBytes": 20971520,
    "zipEntries": 512,
    "manifestBytes": 65536,
    "imagePixels": 24000000,
    "iconMaxSide": 512,
    "backgroundMaxSide": 2048,
    "previewMaxSide": 1600
  },
  "manifestSchema": {
    "$defs": {
      "ThemeArtwork": {
        "additionalProperties": false,
        "properties": {
          "pageBackground": {
            "anyOf": [
              {
                "$ref": "#/$defs/ThemeAsset"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          },
          "navigation": {
            "anyOf": [
              {
                "$ref": "#/$defs/ThemeAsset"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "title": "ThemeArtwork",
        "type": "object"
      },
      "ThemeAsset": {
        "additionalProperties": false,
        "properties": {
          "asset": {
            "maxLength": 180,
            "minLength": 1,
            "title": "Asset",
            "type": "string"
          },
          "darkAsset": {
            "anyOf": [
              {
                "maxLength": 180,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Darkasset"
          }
        },
        "required": [
          "asset"
        ],
        "title": "ThemeAsset",
        "type": "object"
      },
      "ThemeIcon": {
        "additionalProperties": false,
        "properties": {
          "normal": {
            "$ref": "#/$defs/ThemeAsset"
          },
          "selected": {
            "anyOf": [
              {
                "$ref": "#/$defs/ThemeAsset"
              },
              {
                "type": "null"
              }
            ],
            "default": null
          }
        },
        "required": [
          "normal"
        ],
        "title": "ThemeIcon",
        "type": "object"
      },
      "ThemePalette": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "anyOf": [
              {
                "maxLength": 60,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Name"
          },
          "primary": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Primary",
            "type": "string"
          },
          "secondary": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Secondary",
            "type": "string"
          },
          "tertiary": {
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Tertiary",
            "type": "string"
          },
          "topBar": {
            "$ref": "#/$defs/TopBarPalette",
            "default": null,
            "title": "Topbar"
          }
        },
        "required": [
          "primary",
          "secondary",
          "tertiary"
        ],
        "title": "ThemePalette",
        "type": "object"
      },
      "TopBarPalette": {
        "additionalProperties": false,
        "description": "Shared horizontal selectors; omitted colors keep the app's normal fallback.",
        "minProperties": 1,
        "properties": {
          "background": {
            "default": null,
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Background",
            "type": "string"
          },
          "foreground": {
            "default": null,
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Foreground",
            "type": "string"
          },
          "selectedBackground": {
            "default": null,
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Selectedbackground",
            "type": "string"
          },
          "selectedForeground": {
            "default": null,
            "pattern": "^#[0-9A-Fa-f]{6}$",
            "title": "Selectedforeground",
            "type": "string"
          }
        },
        "title": "TopBarPalette",
        "type": "object"
      }
    },
    "additionalProperties": false,
    "properties": {
      "schemaVersion": {
        "const": 1,
        "title": "Schemaversion",
        "type": "integer"
      },
      "id": {
        "maxLength": 48,
        "minLength": 1,
        "title": "Id",
        "type": "string"
      },
      "version": {
        "minimum": 1,
        "title": "Version",
        "type": "integer"
      },
      "name": {
        "maxLength": 60,
        "minLength": 1,
        "title": "Name",
        "type": "string"
      },
      "description": {
        "default": "",
        "maxLength": 300,
        "title": "Description",
        "type": "string"
      },
      "author": {
        "maxLength": 60,
        "minLength": 1,
        "title": "Author",
        "type": "string"
      },
      "license": {
        "maxLength": 120,
        "minLength": 1,
        "title": "License",
        "type": "string"
      },
      "preview": {
        "const": "assets/preview.png",
        "title": "Preview",
        "type": "string"
      },
      "palette": {
        "anyOf": [
          {
            "$ref": "#/$defs/ThemePalette"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "icons": {
        "additionalProperties": {
          "$ref": "#/$defs/ThemeIcon"
        },
        "maxProperties": 80,
        "title": "Icons",
        "type": "object"
      },
      "artwork": {
        "anyOf": [
          {
            "$ref": "#/$defs/ThemeArtwork"
          },
          {
            "type": "null"
          }
        ],
        "default": null
      },
      "iconScale": {
        "anyOf": [
          {
            "maximum": 1.2,
            "minimum": 0.75,
            "type": "number"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Iconscale"
      }
    },
    "required": [
      "schemaVersion",
      "id",
      "version",
      "name",
      "author",
      "license",
      "preview"
    ],
    "title": "ThemeManifest",
    "type": "object"
  }
}