Files
voson a91789b72f v0.2.0: relations preview, item shop, abilities, overlay recommend, GSI enhancements
- Add relations/item/abilities preview (serve_relations.py + web/relations/)
- Add fetch scripts: hero_items, item_shop, items_meta, hero_abilities,
  ability_videos, patches, stratz, matchups, portraits
- Add overlay.py (role tags + Top-3 cyan marks), recommend.py
- Add http_utils.py, loc_format.py, hero_tags.py, item_fears.py
- GSI: full payload JSONL dump, foreground window detection
- Drop real template library; CDN-only matching
- Update docs: CHANGELOG 0.2.0, DESIGN config table, AGENTS module table
- .gitignore: exclude large regenerable assets (icons/portraits/videos)
2026-07-27 11:56:51 +08:00

598 lines
18 KiB
Plaintext

{
"version": "2.14",
"children": [
{
"type": "frame",
"id": "bi8Au",
"x": 0,
"y": 0,
"name": "Recommend Overlay Mock",
"width": 1440,
"fill": "$bg",
"layout": "vertical",
"gap": 28,
"padding": [
40,
48
],
"children": [
{
"type": "frame",
"id": "sExuu",
"name": "Header",
"width": "fill_container",
"layout": "vertical",
"gap": 8,
"children": [
{
"type": "text",
"id": "XG5C0",
"name": "Title",
"fill": "$text",
"content": "Climperor 选将推荐叠层 · Top 3",
"fontFamily": "Inter",
"fontSize": 28,
"fontWeight": "700"
},
{
"type": "text",
"id": "bbWgo",
"name": "Subtitle",
"fill": "$muted",
"content": "左上角青色方标 + 名次 1/2/3;本局只推荐 3 个英雄,不做避用标",
"fontFamily": "Inter",
"fontSize": 15,
"fontWeight": "normal"
}
]
},
{
"type": "frame",
"id": "FmRJX",
"name": "Legend",
"width": "fill_container",
"fill": "$panel",
"cornerRadius": 12,
"gap": 24,
"padding": [
16,
20
],
"alignItems": "center",
"children": [
{
"type": "frame",
"id": "BU5qu",
"gap": 10,
"alignItems": "center",
"children": [
{
"type": "frame",
"id": "f6dWX",
"width": 26,
"height": 26,
"fill": "$climperorCyan",
"cornerRadius": 6,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "b2q6TZ",
"fill": "#0B1220",
"content": "1",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "700"
}
]
},
{
"type": "text",
"id": "a97jY",
"fill": "$text",
"content": "Climperor Top 3:左上青方标 + 名次 1 / 2 / 3",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "normal"
}
]
},
{
"type": "frame",
"id": "IZA48",
"gap": 8,
"alignItems": "center",
"children": [
{
"type": "frame",
"id": "QBCeV",
"width": 26,
"height": 26,
"fill": "$climperorCyan",
"cornerRadius": 6,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "jLbkL",
"fill": "#0B1220",
"content": "2",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "700"
}
]
},
{
"type": "frame",
"id": "qSBVg",
"width": 26,
"height": 26,
"fill": "$climperorCyan",
"cornerRadius": 6,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "QhcbJ",
"fill": "#0B1220",
"content": "3",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "700"
}
]
},
{
"type": "text",
"id": "Q1OX0h",
"fill": "$muted",
"content": "仅此三种标记",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "normal"
}
]
}
]
},
{
"type": "frame",
"id": "X9AZ3",
"name": "Grid Panel",
"width": "fill_container",
"fill": "$panel",
"cornerRadius": 16,
"layout": "vertical",
"gap": 16,
"padding": 24,
"children": [
{
"type": "text",
"id": "GrQG6",
"fill": "$text",
"content": "英雄选择网格(示意 · 优势路候选)",
"fontFamily": "Inter",
"fontSize": 16,
"fontWeight": "600"
},
{
"type": "frame",
"id": "QZD02",
"name": "Hero Row",
"width": "fill_container",
"gap": 16,
"children": [
{
"type": "frame",
"id": "rbYlg",
"name": "Card 幻影刺客",
"width": 160,
"height": 220,
"fill": "$card",
"cornerRadius": 10,
"stroke": "$border",
"strokeWidth": 1,
"layout": "none",
"children": [
{
"type": "rectangle",
"id": "xgqyq",
"x": 0,
"y": 0,
"name": "Art",
"fill": "#3D4F6F",
"width": 160,
"height": 150
},
{
"type": "rectangle",
"id": "qaeDN",
"x": 0,
"y": 110,
"name": "Fade",
"fill": {
"type": "gradient",
"gradientType": "linear",
"enabled": true,
"rotation": 180,
"size": {
"height": 1
},
"colors": [
{
"color": "#00000000",
"position": 0
},
{
"color": "#0B1220CC",
"position": 1
}
]
},
"width": 160,
"height": 40
},
{
"type": "text",
"id": "VV5Ui",
"x": 10,
"y": 158,
"name": "HeroName",
"fill": "$text",
"content": "幻影刺客",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "600"
},
{
"type": "text",
"id": "iqSKY",
"x": 10,
"y": 182,
"name": "Note",
"fill": "$muted",
"content": "第 1 推荐",
"fontFamily": "Inter",
"fontSize": 11,
"fontWeight": "normal"
},
{
"type": "frame",
"id": "oednb",
"layoutPosition": "absolute",
"x": 8,
"y": 8,
"name": "ClimperorMark",
"width": 28,
"height": 28,
"fill": "$climperorCyan",
"cornerRadius": 7,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "kgwBF",
"fill": "#0B1220",
"content": "1",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "700"
}
]
}
]
},
{
"type": "frame",
"id": "DH12d",
"name": "Card 敌法师",
"width": 160,
"height": 220,
"fill": "$card",
"cornerRadius": 10,
"stroke": "$border",
"strokeWidth": 1,
"layout": "none",
"children": [
{
"type": "rectangle",
"id": "i5t4a8",
"x": 0,
"y": 0,
"name": "Art",
"fill": "#354866",
"width": 160,
"height": 150
},
{
"type": "rectangle",
"id": "MCGHt",
"x": 0,
"y": 110,
"name": "Fade",
"fill": {
"type": "gradient",
"gradientType": "linear",
"enabled": true,
"rotation": 180,
"size": {
"height": 1
},
"colors": [
{
"color": "#00000000",
"position": 0
},
{
"color": "#0B1220CC",
"position": 1
}
]
},
"width": 160,
"height": 40
},
{
"type": "text",
"id": "vQU4Q",
"x": 10,
"y": 158,
"name": "HeroName",
"fill": "$text",
"content": "敌法师",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "600"
},
{
"type": "frame",
"id": "eyCpo",
"layoutPosition": "absolute",
"x": 8,
"y": 8,
"name": "ClimperorMark",
"width": 28,
"height": 28,
"fill": "$climperorCyan",
"cornerRadius": 7,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "MkueZ",
"fill": "#0B1220",
"content": "2",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "700"
}
]
},
{
"type": "text",
"id": "Z8HgB",
"x": 10,
"y": 182,
"name": "Note",
"fill": "$muted",
"content": "第 2 推荐",
"fontFamily": "Inter",
"fontSize": 11,
"fontWeight": "normal"
}
]
},
{
"type": "frame",
"id": "Ens5N",
"name": "Card 冥魂大帝",
"width": 160,
"height": 220,
"fill": "$card",
"cornerRadius": 10,
"stroke": "$border",
"strokeWidth": 1,
"layout": "none",
"children": [
{
"type": "rectangle",
"id": "s76D2",
"x": 0,
"y": 0,
"name": "Art",
"fill": "#2F415C",
"width": 160,
"height": 150
},
{
"type": "rectangle",
"id": "I2m5Ki",
"x": 0,
"y": 110,
"name": "Fade",
"fill": {
"type": "gradient",
"gradientType": "linear",
"enabled": true,
"rotation": 180,
"size": {
"height": 1
},
"colors": [
{
"color": "#00000000",
"position": 0
},
{
"color": "#0B1220CC",
"position": 1
}
]
},
"width": 160,
"height": 40
},
{
"type": "text",
"id": "UmROf",
"x": 10,
"y": 158,
"name": "HeroName",
"fill": "$text",
"content": "冥魂大帝",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "600"
},
{
"type": "text",
"id": "sKaLN",
"x": 10,
"y": 182,
"name": "Note",
"fill": "$muted",
"content": "第 3 推荐",
"fontFamily": "Inter",
"fontSize": 11,
"fontWeight": "normal"
},
{
"type": "frame",
"id": "LrTjT",
"layoutPosition": "absolute",
"x": 8,
"y": 8,
"name": "ClimperorMark",
"width": 28,
"height": 28,
"fill": "$climperorCyan",
"cornerRadius": 7,
"justifyContent": "center",
"alignItems": "center",
"children": [
{
"type": "text",
"id": "gJtg2",
"fill": "#0B1220",
"content": "3",
"fontFamily": "Inter",
"fontSize": 14,
"fontWeight": "700"
}
]
}
]
}
]
}
]
},
{
"type": "frame",
"id": "t5uLoK",
"name": "Footer Notes",
"width": "fill_container",
"fill": "$panel",
"cornerRadius": 10,
"layout": "vertical",
"gap": 6,
"padding": [
12,
16
],
"children": [
{
"type": "text",
"id": "j40a2",
"fill": "$climperorCyan",
"content": "设计要点(已确认)",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "700"
},
{
"type": "text",
"id": "lDu4I",
"fill": "$muted",
"content": "1. 只推荐 3 个英雄:左上角青方标显示名次 1 / 2 / 3。",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "normal"
},
{
"type": "text",
"id": "z1sDyw",
"fill": "$muted",
"content": "2. 颜色固定青色 #2EC4B6;不做琥珀避用标,也不复刻 Plus 三角。",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "normal"
},
{
"type": "text",
"id": "K2l2Bt",
"fill": "$muted",
"content": "3. 按本局分路过滤候选,再按对位分取 Top 3;已选/禁用不画标。",
"fontFamily": "Inter",
"fontSize": 13,
"fontWeight": "normal"
}
]
}
]
}
],
"variables": {
"bg": {
"type": "color",
"value": "#0B1220"
},
"panel": {
"type": "color",
"value": "#151D2E"
},
"card": {
"type": "color",
"value": "#1E2A40"
},
"cardMuted": {
"type": "color",
"value": "#121826"
},
"text": {
"type": "color",
"value": "#E8EEF7"
},
"muted": {
"type": "color",
"value": "#8B9BB4"
},
"plusGreen": {
"type": "color",
"value": "#22C55E"
},
"plusRed": {
"type": "color",
"value": "#EF4444"
},
"climperorCyan": {
"type": "color",
"value": "#2EC4B6"
},
"climperorAmber": {
"type": "color",
"value": "#F4A261"
},
"border": {
"type": "color",
"value": "#2A3650"
}
},
"fileToken": "7e7a24d3-c148-402b-a09b-4592822f3745"
}