Files
climperor/CHANGELOG.md
T
vosonandCursor 30218790ce Add 7.41e patch notes with a hand-authored reading sidebar.
Ship Climperor Web 0.6.13: latest-patch summary panel, icon/innate fallbacks, and layout/scroll fixes; keep shared ability badges in git.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 10:06:09 +08:00

51 KiB
Raw Blame History

Changelog

本文件记录 上分帝(Climperor 的用户可见变更。格式参考 Keep a Changelog

[Unreleased]

Added

  • PC 本人锁定英雄后,按阵容推荐装备:核心装(hero_items 相对热度)+ 敌方应对装(定性规则),overlay 以图标条展示;结果写入 recommendations.items

Changed

  • 上分帝 Web 每日刷新明星比赛改为按 fetched_at 轮换(默认每次 15 人),遇 OpenDota 连续 429 熔断并保留旧缓存;hero_stats / hero_matches 限流时 soft-fail 保留缓存,避免整档 daily 被拖死。
  • 上分帝 Web dailyOpenDota 先单次探测,429/失败则跳过 stats/matches/prohero_stats 遇 429 不再长退避;部署前拒绝空壳 hero_stats / STRATZ 覆盖生产。fetch_patches 图标下载 import 修复,可正常入库新版本(含 7.41e)。

Removed

  • PC 选将 overlay 不再在顶栏头像下显示定位图标;仍保留网格「克/搭/补」与阵容分析条。

[0.6.13] - 2026-07-31

Fixed

  • 版本页「版本解读」:max-height 按顶栏留白(100dvh - 9rem),sticky 面板不再伸出视口,主栏未滚到底也能独立滚完解读全文。

[0.6.12] - 2026-07-31

Fixed

  • 版本页技能图标:补拉补丁引用的 CDN 图标;先天无 CDN 图时用 innate.png;加载失败不再留空框(回退先天徽章或移除 img)。

[0.6.11] - 2026-07-31

Fixed

  • 版本页:正文单独居中,解读贴在主列右侧;解读侧栏视口内可滚动看完全文。

[0.6.10] - 2026-07-31

Added

  • 上分帝 Web 版本页:最新版右侧「版本解读」侧栏(手写静态摘要 patch_summaries.json,非官方);入库 7.41e 补丁详情与解读。

[0.6.9] - 2026-07-30

Fixed

  • 恢复 OSS 英雄横版头像(曾被 96×96 匹配模板误覆盖);静态导出/上传不再回退到 pc/templates/cdn,缺图或非宽图会直接失败;头像 URL 缓存戳改为 v=wide2

[0.6.8] - 2026-07-30

Added

  • 主播:Emo(火女教学)、奶绿(琼英碧灵 / dota2不落)。
  • 琼英碧灵别名「奶绿」。

Changed

  • 物品页商店网格在视口内居中,详情栏落在右侧空隙,不再把整块商店挤偏。

[0.6.7] - 2026-07-30

Changed

  • 比赛页主列由 1680px 收至 1200px,并按居中布局预留右侧筛选栏宽度,避免选手列表被裁切。

[0.6.6] - 2026-07-30

Changed

  • 英雄详情抽屉改为按 #columns 实测高度预留完整网格(含最后一排),剩余给抽屉;技能 Tab 不硬性规定高度,内容随抽屉 flex/滚动。
  • 技能演示视频在抽屉变矮时宽度随高度收缩,保持 16:9,避免左右黑边。

[0.6.5] - 2026-07-30

Changed

  • 英雄详情抽屉按视口高度计算:预留顶栏、约 24% 英雄网格与定位标签,上限 640px(原 88dvh/720 几乎遮满网格)。

[0.6.4] - 2026-07-30

Added

  • 比赛卡片头部显示比赛 ID(顶层「比赛」页与英雄详情「近期比赛」Tab 共用)。

[0.6.3] - 2026-07-30

Changed

  • 英雄详情改为自底部上滑抽屉:高度展开顶起定位标签(标签不挂在面板上);点击空白或下滑可关闭;去掉标签行全宽底与打开时的网格遮罩条。
  • 比赛页去掉筛选侧栏重复的「共 X 场 · 第 X/X 页」(仅保留列表底部分页区统计)。

[0.6.2] - 2026-07-30

Added

  • 英雄页底部居中显示站点版本号与数据更新时间(取各数据集 fetched_at 最新值;打开详情时隐藏)。
  • 点击定位标签上方空白(英雄网格空隙或工具栏空白)可关闭详情面板。

Changed

  • 版本页底部不再显示站点版本号(改由英雄页底部展示)。

[0.6.1] - 2026-07-30

Added

  • 英雄详情标题下显示英文名与缩写(如 Anti-Mage · AM;无缩写时仅英文名)。

[0.6.0] - 2026-07-30

Changed

  • 站点版本升至 0.6.0:汇总 0.5.x 已成型能力——History 路径路由与 SEO/GEO 预渲染、设计令牌与顶栏壳、英雄页定位/详情布局、主播多平台与直播探测纠偏、monorepo 与刷新部署可靠性。此后增量 UI/文案仍抬末位;壳层、路由或可索引能力等阶段性成型再抬中段。
  • 顶栏品牌「上分帝」改用思源宋体(Noto Serif SC)子集,气质更贴「帝」;正文仍为系统无衬线。

[0.5.115] - 2026-07-30

Added

  • 上分帝 Web SEO / GEOHistory 路径路由(兼容旧 #/... 书签)、首页 meta/OG/JSON-LD、路由态动态 title/description、爬虫跳过移动端门禁。
  • 导出预渲染:各英雄 /heroes/{key}、机制 /mechanics/{effect} 与顶层页可抓取 HTML;生成 sitemap.xml / robots.txt / llms.txtCloudflare _redirects SPA fallback;本地 serve_relations 同步支持深度链接刷新。

[0.5.114] - 2026-07-30

Added

  • 主播资料补全支持斗鱼:v.douyu.com/author/<hash>(兼容 author-video)拉粉丝/关注/播放/头像;仅有房间号时从直播间 HTML 解析 up_id 再拉作者页(失败才回退 betard)。斗鱼卡片展示「关注 / 播放 / 粉丝」。
  • 主播页收录斗鱼「踏上征途167(狗皇)」「天残少年K9」「叶子长青K」、抖音「浙大小鱼王—dota2」与 B 站「Dota2绝中绝」;开播探测支持斗鱼(betard)。

[0.5.112] - 2026-07-30

Changed

  • 技能详情演示视频:有横向空间时加宽(上限约 720px),按官网 16:9 原比例显示;去掉左右 cover 裁切与过窄的 480px 上限。

Fixed

  • Web 刷新可靠性:前端 / relations.json / 英雄表 / 网格顺序变更也会触发部署;主播 is_live 翻转不再单独触发整站部署。
  • 主播直播探测失败统一清为未开播(不再沿用旧的“直播中”兜底);--dry-run 不再 restore/save 缓存或写 summarypatch 因全量刷新锁冲突跳过时飞书摘要显示「已跳过」。

[0.5.111] - 2026-07-30

Changed

  • 主播页排序:先按是否在播(在播靠前),再按粉丝数降序;直播状态刷新后同步重排。

[0.5.110] - 2026-07-30

Fixed

  • 主播直播状态:线上与本地预览均执行平台探测;探测失败或过期状态不再沿用旧的“直播中”结果,只有本轮确认开播才显示直播角标。

[0.5.109] - 2026-07-30

Changed

  • 英雄页:定位筛选迁至网格与详情之间(Valve 图标斜角按钮);去掉详情 Chip;未选英雄时隐藏详情占位。
  • 提高英雄详情固定高度(约至 640px 上限),压缩网格与详情之间的多余空白;Tab 切换高度不跳动。
  • 技能 Tab:演示视频与文案强制左右排布;去掉图标与详情之间的中间分割线。
  • 核心装备 / 被克装备:详情区上下分割线统一为全宽。

[0.5.108] - 2026-07-30

Fixed

  • 技能 Tab:演示视频与文案强制左右排布(不再因中间栏偏窄折行上下叠);详情固定高度提至约 560px,常规技能默认可视区内完整展示。

[0.5.107] - 2026-07-30

Changed

  • 技能 Tab:去掉技能图标与详情之间的中间分割线(装备 Tab 保留)。

[0.5.106] - 2026-07-30

Fixed

  • 核心装备 / 被克装备:详情区上下分割线统一为全宽(合成线不再缩在 720px 文案栏内)。

[0.5.105] - 2026-07-30

Fixed

  • 技能 / 核心装备 / 被克装备等 Tab 切换时详情区高度不再跳动(恢复固定高 + 禁止压缩)。

[0.5.104] - 2026-07-30

Changed

  • 缩小英雄详情固定高度,给网格与定位栏留更多空间;走势 / 对位等长内容仍在详情区内滚动。

[0.5.103] - 2026-07-30

Changed

  • 未选中英雄时隐藏详情占位条,不再显示提示文案。

[0.5.102] - 2026-07-30

Changed

  • 战斗属性补全转身速率:OpenDota 缺省时按引擎默认 0.6 显示(与官网一致); heroes.json 回填 82 名英雄。

[0.5.101] - 2026-07-30

Changed

  • 选中英雄时定位栏不再点亮「全部」,只高亮该英雄定位。

[0.5.100] - 2026-07-30

Changed

  • 去掉英雄定位栏上下分割线。

[0.5.99] - 2026-07-30

Changed

  • 英雄详情技能区去掉定位 Chip;选中英雄时在上方定位栏高亮对应选项(不影响网格筛选)。

[0.5.98] - 2026-07-29

Changed

  • 英雄详情战斗属性(攻击 / 防御 / 机动性)改为官网同款图标 + 数值横排;图标取自 dota2.com.cn herostatic/stats,视野显示为「白天 / 夜晚」。

[0.5.97] - 2026-07-29

Changed

  • 英雄定位筛选移至英雄网格与详情面板之间,改用 Valve 风格图标与斜角按钮;保留多选, 暂不展示「幻象」筛选。

[0.5.96] - 2026-07-29

Changed

  • 加长主导航选中下划线至 44px;hover 改为仅文字提亮,移除与斜切分隔冲突的矩形冷光底。

[0.5.95] - 2026-07-29

Changed

  • 移除顶栏品牌 Logo 右侧斜线,仅保留暗红内光,减少品牌区与导航之间的装饰噪声。

[0.5.94] - 2026-07-29

Changed

  • 放大宽屏顶栏比例:主导航改为 16px / 76px 最小宽 / 44px 点击高,品牌 Logo 提升至 32px;≤1200px 自动恢复 15px / 40px 紧凑规格,筛选 Chip 保持次级尺寸。

[0.5.93] - 2026-07-29

Changed

  • 顶栏轻度借鉴 Dota 2 国服官网:加入近黑金属横梁、暗红品牌内光与斜切细分隔; 保留青色短下划线和定位 Chip,不复刻门户式梯形按钮、厚重贴图与高顶栏。

[0.5.92] - 2026-07-29

Changed

  • 主导航放弃连续按钮外框,改为轻量文字 Tab:透明背景、低噪 hover 与青色短下划线选中态;定位筛选继续使用独立 Chip,强化两级导航层次。

[0.5.91] - 2026-07-29

Changed

  • 顶部导航改为紧凑双层:首行品牌 | 居中主导航 | 搜索+邮件;次行仅英雄定位筛选。 去掉品牌/邮件绝对悬浮与搜索贴边,减少横向空洞;窄桌面收紧 Tab/搜索并隐藏品牌标题。

[0.5.90] - 2026-07-29

Changed

  • 对位页底部文案简化为「数据来自 STRATZ(相对优势,全局聚合)。」

[0.5.89] - 2026-07-29

Changed

  • 英雄「对位」统一只使用 STRATZstratz_matchup_tops.json);移除 OpenDota 对位交叉与页面「来源一致 / 分歧」提示;audit_relations 改为 STRATZ 单源审计。

[0.5.88] - 2026-07-29

Changed

  • 根目录 DESIGN.md 改为上分帝 Web 视觉设计规范(design.md 格式); 原技术方案迁至 ARCHITECTURE.md
  • Web 统一设计令牌:色板、字号层级、4/8 间距、圆角、内容宽度档位与焦点态; 排行 / 比赛 / 主播 / 物品补齐页标题;版本号展示降至 32px;断点收敛为 640 / 900 / 1200。

[0.5.87] - 2026-07-29

Fixed

  • 技能/物品文案填充:Valve 中文 %token%special_values 名称大小写不一致、 以及魔晶/神杖 %bonus_<sv>% 指向升级通道时不再留下 ?(如乌尔萨震撼大地 「减速4秒」、祸乱蚀脑魔晶冷却)。
  • 技能详情有演示视频时加宽右侧文案列、收窄视频上限,空间够时技能介绍尽量单行。
  • 技能详情特殊数值标签不再露出 Valve <font> 原文(如「眩晕时间」);数值级差 保持单行;冷却/文案同底栏下沉,避免介绍区窄列竖排与多余滚轮。
  • 技能详情底栏蓝量靠右,不再贴着冷却时间。
  • 版本页笔记剥离 Valve <font> / <span class="New|Subtitle"> 等标签,只保留换行。

[0.5.86] - 2026-07-29

Changed

  • 「比赛」场次摘要移到分页按钮下方。

[0.5.85] - 2026-07-29

Changed

  • 「比赛」场次摘要「共 N 场 · 第 X/Y 页」移到底部分页区,与页码同栏。

[0.5.84] - 2026-07-29

Fixed

  • 「比赛」侧栏「全部 / 职业 / 国服」与选手按钮宽度对齐。

[0.5.83] - 2026-07-29

Added

  • 上分帝 Web「比赛」侧栏顶部增加「全部 / 职业 / 国服」筛选;选手列表随类型联动; URL #/matches[/account_id][?origin=pro|china][&page=N](默认全部、第 1 页省略参数)。

[0.5.82] - 2026-07-29

Changed

  • 仓库重组为 pc/(局内识别)、web/(上分帝 Web)与 shared/(共享包)三层 monorepo;保留脚本直跑方式,站点内容与 SITE_VERSION 不变。
  • 上分帝 Web 飞书日报卡片精简:去掉模块列表;地区/状态码并入「访问」; 「刷新与部署」扁平展示版本、Actions、Pages。
  • 上分帝 Web 定时刷新增加跨档位并发锁与可恢复缓存;补丁详情、近期比赛、 STRATZ 等增量数据不再因 checkout 清理而反复全量拉取。
  • 刷新部署改为按业务内容判定变化,并统一原子写 JSON;STRATZ 请求失败保留旧 数据并标记陈旧,OSS 未同步时阻止 Pages 发布。
  • 飞书日报新增刷新摘要、生产数据新鲜度和 /api/live-status 探针;Pages 发布后 自动验证数据快照与 Function,避免“任务绿色但线上未更新”。

[0.5.81] - 2026-07-29

Added

  • 上分帝 Web「比赛」页分页:每页 20 场,底栏页码;URL #/matches[/account_id][?page=N]
  • 明星比赛可选拉取天梯(lobby_type=7--include-pubs;daily 默认开启);卡片标 「职业 / 天梯 / 国服」。

Changed

  • 明星名单对照 Dotabuff / Liquipedia 补全主要战队与国服昔日明星(如 Somnus/Maybe、 Chalice/查理斯、YB、Falcons 缺席等);fetch_pro_matches 按每种 lobby 各保留 --limit 场,避免联赛挤掉天梯。
  • 「比赛」卡片列宽统一(约 30 级技能条 + 余量),右侧「详情」对齐。

[0.5.80] - 2026-07-29

Changed

  • 上分帝 Web「主播」卡片资料区定稿:头像行 = 头像 | 昵称 + 抖音号/获赞/粉丝 (B 站为 UID/关注/粉丝)|「关注」;签名(主页留言)独立全宽行(最长 3 行), 不再夹在中间栏。

[0.5.79] - 2026-07-29

Changed

  • 上分帝 Web「主播」直播角标按抖音网页版实测对齐:bottom: -6px 叠在粉环底部 (无间距)、粉渐变底、无描边阴影;粉环色改为 rgb(254, 44, 85)

[0.5.78] - 2026-07-29

Added

  • 上分帝 Web:移动端拦截页(手机/平板提示改用 PC 访问)+ 「催更移动端」需求计数 (/api/mobile-demand;同设备只计一次)。

[0.5.77] - 2026-07-29

Changed

  • 上分帝 Web「主播」资料行强化数值层级与分隔节奏。

[0.5.76] - 2026-07-29

Changed

  • 上分帝 Web「主播」取消头像悬浮窗;抖音号 / 获赞 / 粉丝与签名收进头像与「关注」 之间的中间栏;直播角标与粉环间距加大,避免贴边。

[0.5.75] - 2026-07-29

Changed

  • 上分帝 Web「主播」抖音号 / 获赞 / 粉丝改为头像悬停卡片展示(不再占卡片正文 一行);有直播间时附「直播中 · 点击进入」或「点击前往直播间」。

[0.5.74] - 2026-07-29

Fixed

  • 上分帝 Web /api/live-status:正确读取 data.jsonstreamers.streamers 列表(此前读顶层数组导致探测目标为空);冷启动用 daily is_live 作软失败 兜底;同 isolate 并发请求合并探测。
  • 部署时从 dist/ 目录跑 wrangler,确保 functions/Pages Function)被编译 上传;此前从仓库根部署会漏掉 Function,线上接口回落到 index.html

[0.5.73] - 2026-07-29

Changed

  • 上分帝 Web 时间展示统一为人性化混排:近时「刚刚 / N分钟前 / N小时前 / 昨天 / N天前 / N周前」,更早显示「6/13 19:00」(跨年带年份);悬停可见完整 绝对时间。覆盖比赛开场、排行/主播/走势/对位「更新于」、版本日期等。

[0.5.72] - 2026-07-29

Fixed

  • 上分帝 Web「主播」取消静音后默认音量改为约 35%(不再直接开到最大);用户之后 用原生滑条调大仍生效。

[0.5.71] - 2026-07-29

Added

  • 上分帝 Web:明星选手 watchlistweb/data/pro_player_watchlist.json); fetch_pro_matches.py 默认按名单拉近期联赛/锦标赛对局,写入 pro_matches.jsongitignore,daily 现拉);英雄详情「近期比赛」与顶层 「比赛」页合并展示。
  • 上分帝 Web 顶层「比赛」Tab#/matches[/account_id]):侧栏筛选选手, 卡片含出装/加点(同英雄详情),可点英雄头像跳转详情。
  • 主播高光同名 JPG 封面(streamer_videos/<id>.jpg → OSS streamer-video/); 未开播先显示封面,避免整块黑屏。

Changed

  • 顶栏顺序改为:英雄 → 排行 → 主播 → 比赛 → …
  • 「主播」视频改为视口分档加载:远处不请求、近约 1 屏只 metadata、中部 canplay 即播且同时仅 1 路 preload=auto(取代整页队列式 canplaythrough);超大 mp4 再压缩以缩短首播等待。
  • 收录抖音主播「雷泽」(leize)及精选高光。

[0.5.69] - 2026-07-29

Changed

  • 上分帝 Web「主播」常用英雄头像同样 eager + fetchPriority=high,并与主播 头像一并等加载完成后再启动视频预载,避免只露出 alt 中文名、图未出。

[0.5.68] - 2026-07-29

Changed

  • 上分帝 Web「主播」常用英雄只保留头像,去掉头像下方中文名(悬停 title / alt 仍可辨认)。

[0.5.67] - 2026-07-29

Changed

  • 上分帝 Web「主播」头像改为 eager + fetchPriority=high,等头像加载完成 (或 2.5s 超时)后再启动视频逐个预载,避免大 mp4 占满连接导致头像只显示 alt 文字;视频骨架占位改为标准 16:9 横屏高度。

[0.5.66] - 2026-07-29

Changed

  • 上分帝 Web「主播」视频未就绪时改为矮骨架占位(约 88px +「视频加载中」), 不再默认铺满 9:16 大黑框;元数据到达后再按真实比例展开,并隐藏占位期原生播放钮。

[0.5.65] - 2026-07-29

Fixed

  • 上分帝 Web「主播」视频队列:建卡时网格尚未挂到 DOM,isConnected 为假会把 队列条目全部丢掉,导致既不预载也不自动播放;改为未挂载时下一帧重试。

[0.5.64] - 2026-07-29

Changed

  • 上分帝 Web「主播」精选视频改为队列逐个预载:按卡片顺序先拉第一个, canplaythrough(或失败)后再拉下一个;播放仍跟视口中心卡。避免十余个 大 mp4 同时抢带宽导致首屏长时间转圈。

[0.5.63] - 2026-07-29

Changed

  • 上分帝 Web「主播」精选视频改为延迟挂载 srcpreload="none"),为逐个 预载做准备(随 0.5.64 队列逻辑完善)。

[0.5.62] - 2026-07-29

Fixed

  • 上分帝 Web「对位」STRATZ 抓取默认改为全量刷新(--resume-matchups 仅中断续跑); 单英雄失败保留上一版并标 stale,原子写入避免半截缓存。版本档软触发 --matchups-only 刷新(无 token 不阻断)。

Changed

  • 「对位」面板标明全局聚合口径(不跟随走势页段位/分路/周),展示 STRATZ 相对优势 与原始对局胜率、场次、拉取日期;胜率低于 50% 但相对优势为正时不再误读为错误。
  • 有 OpenDota matchups.json 时对克制/被克行做基线校正交叉提示(来源一致/分歧); 样本不足标为暂无可靠交叉结论。Dota2ProTracker 仅作文档化人工复核参考。

Added

  • shared/matchup_cross.py + audit_relationsweb_matchup_tops_cross 报告段; 单元测试 shared/tests/test_matchup_cross.py

[0.5.61] - 2026-07-29

Added

  • 上分帝 Web「主播」访问触发的实时在播状态:新增 Pages Function GET /api/live-statusweb/frontend/functions/api/live-status.js),首位访客触发 全量探测,经边缘 Cache API 合并请求(5 分钟新鲜窗口内共享结果,无需 KV); 探测逻辑与 fetch_streamer_live.py 一致(抖音 SSR roomStore + B 站 Room/get_info);单个探测失败沿用旧缓存值并标 stale,全失败回陈旧快照或空表, 永不 500。前端每页加载至多请求一次,合并 is_live 后就地更新「直播」角标/动效; 接口不可用时回退 data.json 的 daily 探测值。本地开发 serve_relations.py 提供空 stub 避免 404。

[0.5.60] - 2026-07-29

Added

  • 上分帝 Web「主播」真实在播探测:fetch_streamer_live.py(抖音解析直播间 SSR 页 roomStore 状态;B 站 Room/get_info)回写 data/streamers.jsonis_live / live_probed_at,探测失败保留旧值;进 refresh_web --tier daily

Changed

  • 主播卡片「直播」角标与脉冲动效只在 is_live 探测为真时显示(此前以 live_url 存在作代理,不准确);头像在有 live_url 时仍可点击进直播间,未开播也可访问。

[0.5.59] - 2026-07-29

Added

  • 上分帝 Web「被克装备」观测证据:fetch_item_counter_stats.pyOpenDota Explorer 对阵购买率/条件胜率减同装备全局队伍基线)→ data/item_counter_stats.json item_fears.py 对全部英雄已有机制候选小幅调序;显著新组合须机制复核后写入 overrides。
  • 上分帝 Web 日活飞书推送:notify_site_traffic.py + Gitea Actions site-traffic-notify(每日 09:00 CST;真实访问按已知浏览器 UA 打开 / 估算; 卡片含自动刷新:web-daily/weekly/patch 结论 + 当日 Pages 生产部署)。
  • 上分帝 Web 顶层「走势」#/trends[/bracket]:近 8 周高胜率/上场率榜(初期 / 迷你走势 / 末期 / 变化;STRATZ;无禁用率)。
  • 上分帝 Web 接入 STRATZfetch_stratz_meta.pytoken 经 .env / keyzoo):
    • 英雄详情「走势」优先 STRATZ:勋章条 + 最近 1 周三卡 + 分路 + 近 8 周逐周列表(OpenDota 作兜底)
    • 新子 Tab「对位」#/heroes/<key>/matchups:克制 / 被克 / 搭档三列 STRATZ Top(与网格机制「克/怕/搭」分开展示)
    • 缓存:data/stratz_hero_meta.json / data/stratz_matchup_tops.jsongitignore;仅 Web,不进 recommend / relations
  • 上分帝 Web「近期比赛」Tab#/heroes/<key>/matches):同英雄近期局终局出装 + 加点顺序;展示选手昵称/段位勋章与外链; fetch_hero_matches.pydata/hero_matches.json --source league|public|both--workers--enrich-item-times;仅 Web,不进局内推荐)。
  • 选将规则阵容画像(不接 AI):识别敌方推进/全球流、敌我缺口(缺控制/爆发/输出/先手); 全网格标 克 / 搭 / 补;叠加层显示一句阵容分析;每英雄短推荐原因写入日志与 results JSONdraft_archetypes.py + recommend.suggest_marks)。

Changed

  • 上分帝 Web「被克装备」卡片有对阵证据时显示购买率角标;显著新组合补入 overrides (帕克紫怨、幻影刺客/编织者/石鳞剑士鬼杖、编织者 Eul、石鳞剑士/虚无之灵羊刀); 剑圣移除林肯法球并补入幽魂权杖。
  • 上分帝 Web 英雄详情「走势」:三卡 / 分路统一 当前选中勋章 · 最近 1 周; 布局为勋章条 → 提示 → 三卡 → 分路 → 近 8 周列表。
  • 文档与注释统一称呼:web/relations/ 子项目改称 上分帝 Web(不再称「关系预览」);路径与脚本名(如 serve_relations.py)暂保持不变。
  • 「近期比赛」公开对局默认优先国服;展示最近 10 场胜局;外链改 Dotabuff。
  • 选将推荐不再限 Top-3 名次青标;非定位局也可推克/搭/补(无分路字则不过滤)。

[0.5.58] - 2026-07-28

Added

  • 上分帝 Web「主播」新增 B 站沙王主播,收录主页、直播间、关注与粉丝数。

Changed

  • 主播卡片元信息按平台显示:抖音显示获赞/粉丝,B 站显示 UID/关注/粉丝。

[0.5.57] - 2026-07-28

Fixed

  • 上分帝 Web「主播」竖屏精选视频黑边:不再依赖 canvas 扫边;竖屏统一用内容框 + object-fit: cover,按上下黑边比例设 object-position;亚瑟归来 / 大地瓜写入 video_aspect(横屏仍 contain)。

[0.5.56] - 2026-07-28

Changed

  • 上分帝 Web「主播」精选视频:滚动自动播放默认静音;不再因页面任意点击/按键全局开声,需在各视频原生控件中主动取消静音。

[0.5.55] - 2026-07-28

Fixed

  • 上分帝 Web「主播」竖屏精选视频黑边:修正 object-position 方向;preload=auto + 首帧检测失败时对竖屏启用 16:9 启发式裁切(canvas / OSS CORS 不可用时仍生效)。

[0.5.54] - 2026-07-28

Changed

  • 上分帝 Web 英雄详情「主播」子 Tab:卡片宽度与顶层 #/streamers 一致(880px 居中),竖屏/横屏精选视频比例不变。

[0.5.53] - 2026-07-28

Changed

  • 上分帝 Web「主播」精选视频:竖屏且文件内嵌上下黑边时,首帧自动检测内容区并裁切显示; 横屏视频仍为 contain。可选 video_fit / video_crop / video_aspect 手工覆盖。

[0.5.52] - 2026-07-28

Added

  • 上分帝 Web「主播」页卡片精选高光视频:手工 video/video_title + assets/streamer_videos/(本地 /streamer-video/OSS streamer-video/); 滚入视口中部自动播放(原生 controls;多卡时播最靠近中心者);10 人收录。
  • 直播态头像:抖音式粉红外圈脉冲 + 头像呼吸动画;有 live_url(或将来 is_live)时点击头像进直播间;角标「直播」。

Changed

  • 上分帝 Web「主播」卡片改版:抖音式资料区(昵称行 + 全宽元信息/签名)、 约 880px 宽、元信息竖线分隔、放大英雄标签;右侧仅「关注」;不显示视频标题。

[0.5.51] - 2026-07-28

Changed

  • 上分帝 Web 英雄详情:定位标签从标题下方移到「技能」Tab 中间列顶部(技能图标上方)。

[0.5.50] - 2026-07-28

Added

  • 上分帝 Web 顶层「主播」#/streamers + 英雄详情「主播」子 Tab:手工维护直播间/主页与常用英雄, fetch_streamers.py 从抖音主页补全昵称/签名/关注粉丝获赞/头像;首版仅抖音; data/streamers.json;仅 Web,不进 recommend;进 refresh_web daily 软失败刷新。

[0.5.29] - 2026-07-28

Added

  • 上分帝 WebSTRATZ 走势 / 对位 Tab(见 Unreleased 明细;站点版本 0.5.29)。

[0.5.28] - 2026-07-28

Added

  • 「近期比赛」出装图标叠加购买时间(MM:SS,支持负值);数据来自 OpenDota purchase_log(未解析对局无时间)。中立装用 neutral_item_history
  • fetch_hero_matches.py --enrich-item-times:只补时间字段,无需全量重拉列表。

Changed

  • 「近期比赛」出装布局对齐 OpenDota:主栏一行、背包第二行(背包轮廓图标),去掉竖分隔线。

[0.5.27] - 2026-07-28

Changed

  • 「近期比赛」卡片头:昵称旁不再显示段位文字(如「冠绝」);保留勋章图标,排行榜 # 放进勋章 tooltip。

[0.5.19] - 2026-07-28

Fixed

  • 排行页标题「Immortal 排行榜」与 info 图标保持同一行不换行。

[0.5.18] - 2026-07-28

Changed

  • 排行页「Immortal 排行榜」标题旁增加与走势页一致的 info 气泡提示(官方 Immortal 地区榜 · 各区分数不可比)。

[0.5.13] - 2026-07-28

Changed

  • 排行榜按视口居中(不含右侧说明);说明绝对定位贴在榜单右侧。

[0.5.12] - 2026-07-28

Fixed

  • 排行表分割线错位(去掉选手列 flex)。

[0.5.11] - 2026-07-28

Changed

  • 排行页右侧说明贴紧榜单(与榜单成组居中),不再贴屏幕右缘。

[0.5.10] - 2026-07-28

Changed

  • 排行页国籍列显示中文国名(未知代码仍回退为原代码)。

[0.5.9] - 2026-07-28

Changed

  • 排行页战队 / 国籍无数据时留空,不再显示「—」。

[0.5.8] - 2026-07-28

Changed

  • 排行页:榜单单独居中,右侧说明贴屏幕右缘(不再与榜单成组居中)。

[0.5.7] - 2026-07-28

Changed

  • 排行页新增「战队」列(原选手行内战队标签拆出)。

[0.5.6] - 2026-07-28

Changed

  • 排行页新增「国籍」列(原选手行内国旗代码拆出)。

[0.5.5] - 2026-07-28

Changed

  • 排行页去掉官方榜说明文案。

[0.5.4] - 2026-07-28

Changed

  • 排行页副标题去掉地区名与「Top 100」,仅保留更新时间。

[0.5.3] - 2026-07-28

Changed

  • 排行页:榜单居中,标题 / 地区切换 / 说明贴在右侧。

[0.5.1] - 2026-07-28

Added

  • 上分帝 Web「排行」页(#/rankings,插在英雄之后):Valve Immortal 四区榜 Top 100(中国 / 欧洲 / 美洲 / 东南亚);fetch_leaderboards.pydata/leaderboards.json(仅排名+昵称等,无 MMR/账号 ID)。

[0.5.0] - 2026-07-28

Added

  • 上分帝 Web「走势」Tab#/heroes/<key>/trends):OpenDota 近约 7 天各段位 胜率 / 上场率 / 场次;顶部勋章条(先锋→冠绝)切换段位。
  • fetch_hero_stats.pydata/hero_stats.json(含 totals / window_*); 仅 Web 站点,不进 relations.json / 局内推荐。
  • 核心装备图标显示列表内相对使用率 %OpenDota popularity 归一化)。
  • 冠绝勋章旁说明:样本过小则与超凡合并展示。

Changed

  • 走势布局居中:勋章条 + 三卡,无段位列表 / 被禁率;勋章约 90px。
  • 静态资源增加 /rank/assets/rank_icons/rank_icon_1..8.png

[0.4.2] - 2026-07-27

Changed

  • 上分帝 Web静态图标(头像 / 装备 / 技能 / 属性等)改由阿里云 OSS 同桶托管; config.js 新增 STATIC_ASSET_BASE,生产 Pages 包体约 2 MB(仅 HTML/JS/data),换机部署无需本地 fetch 图标。同步脚本 _oss_static_assets.py upload

Added

  • 新增 _oss_static_assets.py:将 portrait/item/ability 等图标同步到 OSS。

[0.4.1] - 2026-07-27

Changed

  • 线上上分帝 Web技能演示视频改由阿里云 OSS 托管(桶 climperor https://climperor.oss-cn-shanghai.aliyuncs.com/ability-video/...),不再打进 Cloudflare Pages;本地 serve_relations.py 仍读 assets/ability_videos/。 导出写入 config.jsABILITY_VIDEO_BASEexport_relations_site.py --ability-video-base / deploy_relations.py 默认 OSS 地址)。

Added

  • 版本页底部居中显示站点版本号(config.jsSITE_VERSION,如 v0.4.1)。

Fixed

  • 版本页熊灵(spirit bear)头像:静态导出包含 portrait/spirit_bear.png

[0.4.0] - 2026-07-27

Added

  • 新增 deploy_relations.py:一键把上分帝 Web静态站点部署到 Cloudflare Pages —— 串联导出(export_relations_site.py)→ 资产完整性预检(缺图则中止) → wrangler pages deploy 直传 dist/relations/ → 绑定自定义域名。凭据 经 keyzoo 注入(refining/cloudflare 的 Global API Key)或手动 CLOUDFLARE_EMAIL / CLOUDFLARE_API_KEY 环境变量;默认项目 climperor-relations、域名 dota2.refining.dev,均可参数覆盖。
  • 新增 _cf_status.py:只读查询 Cloudflare Pages 项目 / 部署 / 自定义域名 状态(凭据经 keyzoo 注入),部署后核对用;另有一次性辅助脚本 _cf_domain.py(探测域名/ DNS 记录)与 _cf_add_cname.py(补建缺失的 CNAME,幂等)。
  • 物品页搜索框进 URL#/items?q=...,刷新保状态、可分享;英雄页与物品页 搜索各用独立 debounce 计时器,互不干扰。
  • 版本页支持非英雄单位:Valve patchnotes heroes[] 中的熊灵(id 1961)等 伪英雄 id 现解析为中文名 + 本地头像(fetch_patches.pyUNIT_NAMES 静态导出一并拷贝头像)。

Fixed

  • 修复 serializeHash 生成 #heroes(缺 /)导致刷新后路由解析异常的 问题,现统一为 #/heroes 形态。
  • 版本日志中未知单位 id 不再显示 # 1961 原始数字,回退为「其它单位」。
  • 本地开发服务 serve_relations.py 增加 CSP 响应头(default-src 'self' 等), 限制资源只从本站加载。
  • data.json 加载失败时显式抛出 HTTP 状态错误,不再静默进入异常渲染。

Performance

  • 上分帝 Web缓存英雄技能条目(skillEntriesFor)与血蓝条量程 resourceBarScale)计算结果,数据重载时失效,减少重复遍历。

[0.3.0] - 2026-07-27

Added

  • 上分帝 Web「版本」页改为默认展示最新版本的完整改动详情(综合 / 物品 / 中立物品 / 英雄),顶部下拉可切换近一年内的其它版本;fetch_patches.py 重写为抓取近一年 (默认 365 天,--days / --since 可调)版本列表 + 逐版本 patchnotes 详情, 构建 lookupability_id / hero_id → 名称 + 图标 key)并下载引用到的物品 / 技能 图标到 assets/,静态导出与本地开发服务均自包含、不联网。
  • 版本页排版对齐官网:左大标题「游戏性更新 {版本}」+ 右选择框,内容居中窄列; 物品图标按 Steam CDN 88×64 比例(66×48)显示(修复正方形框上下黑边);英雄头像 复用英雄页 16:9 宽卡(?v=wideobject-fit:contain)不再裁切面部;图标放大 (物品 56、技能 48、头像 112,对齐技能页 68 / 商店 70)。
  • 英雄详情区新增 版本变更 标签:列出该英雄近一年各版本的改动(版本号 + 日期 + 属性 chip + 各技能改动),内容居中、可滚动;与版本页共用技能块渲染逻辑。
  • 版本日志先天技能图标修复:先天技能(如剑心犹在、狙击瞄准)CDN 404,现复用英雄 技能页 bundled innate.png(从 hero_abilities.is_innate 构建先天 key 集合判断), 覆盖 117 个被引用的先天技能。
  • hero_notes 属性标签补全 movement → 「移速」(修复原始英文 movement 漏显示)。
  • 新增 export_relations_site.py:一键导出上分帝 Web为纯静态站点(dist/relations/), 内含 data.json 快照 + 前端 + 图片资源,可直接部署到任意静态托管; --with-videos 可选拷贝技能演示视频(体积数 GB)。
  • 上分帝 Web前端资源路径改为相对路径(data.json / attr/ / portrait/ / item/ 等), 静态托管在子路径下也能正常工作;serve_relations.py 同时提供 /data.json 路由, 本地开发服务行为不变。
  • 上分帝 Web技能详情:左侧播放官网技能演示视频(assets/ability_videos/ 本地缓存, /ability-video/<英雄>/<技能>.webm 路由),右侧为技能名与描述(对齐官网左右分栏); 未缓存的技能自动隐藏视频,描述列占满整行。
  • 英雄详情的装备详情区不再重复显示大图(上方装备行已有图标)。
  • 上分帝 Web技能详情新增「施法前摇」「吟唱时间」两行(取自 Valve cast_points / channel_times,逐级相同则合并为单值);fetch_hero_abilities.py 全量重抓后生效。
  • 上分帝 Web技能详情按 dota2.com.cn 版式重排:移除右上重复的技能大图标(上方技能列表 已高亮选中项);属性值(技能/伤害类型/免疫/驱散/施法距离等)双列网格、特殊数值 自适应多列网格(消除右列大片空白);冷却/蓝量移到带图标的底栏——冷却用官方 cooldown.png(新增 assets/ui_icons/ + /ui-icon/ 路由,静态导出一并拷贝), 蓝量沿用官方 CSS 渐变方块;serve_relations.py 字段投影补齐 cast_point / channel_time
  • 技能详情布局适配 .detail 定值高度链:视频改 height:100% + object-fit:cover 自适应填满可用高度(align-self:stretch 无法压过被替换元素的 16:9 固有高度,曾 导致视频下方留白 / 顶出滚轮),main 钉到列高、内容超高时仅在详情列内细滚,视频 不再被牵连出滚轮;压缩参数行距使典型技能在高屏零滚轮(无头 Chrome + CDP 实测 scrollHeight == clientHeight 验证)。整块宽度上限 1000→1320px、视频 700→820px、 详情列 720→760px。
  • 上分帝 Web顶栏左上角新增 Dota 2 logo +「上分帝」标题(assets/ui_icons/dota2_logo.png 透明 emblem),经 /ui-icon/ 路由与静态导出统一分发;窄屏自动隐藏标题或整组标识, 不影响居中分页布局。
  • 上分帝 Web新增 Hash 路由:顶层标签(英雄 / 物品 / 版本)、选中英雄 + 详情子标签 (技能 / 核心装备 / 被克装备 / 版本变更)、物品页选中物品、版本页选中版本均同步进 URL;英雄页的定位标签筛选与搜索框文本以 query 参数(?tags=核心,辅助&q=axe)进 URL。形态如 #/heroes/axe/core#/items/black_king_bar#/patches/7.41 #/patches = 最新版,序列化时省略与最新同名的版本号)。刷新保状态、可分享 / 深度链接、浏览器前进后退还原;搜索框 300ms debounce + replaceState(不刷历史栈), 标签筛选用 replaceState,其余离散选择用 pushState。坏链接(未知英雄 / 物品 / 版本)优雅降级为丢弃该项。新增 web/relations/router.jsparseHash / serializeHash / installRouter),app.jsmain() 装载并首屏 applyUrlToState export_relations_site.py 静态导出列表补入 router.js,静态站点深度链接同样可用 (可部署 GitHub Pages,无需 rewrite)。Hash 路由不命中后端路径,serve_relations.py 零改动。

Fixed

  • fetch_hero_abilities.pyhas_scepter/has_shard 不再 or bool(scepter_loc/shard_loc)。 Valve 移除某项升级后仍保留scepter_loc/shard_loc 文案,但 ability_has_scepter/ability_has_shard 已变为 False;旧 fallback 把残留文案 当成「有升级」,导致本地数据与 dota2.com 不一致。改为只信显式 flag 并清空残留 文案,全量重抓后修正 10 个过期 A 杖 + 20 个过期魔晶(主宰/剑刃风暴、 影魔/支配死灵、幻影长矛/灵魂之矛、斯拉达/鱼人碎击、术士/暗言术、哈斯卡/沸血之矛、 殁境神蚀者/奥术天球、熊战士/灵魂链接、玛尔斯/护身甲盾、破晓辰星/熠熠生辉; 剃刀/静电连接、沙王/尾刺、暗影萨满/禽戏 等)。
  • fetch_ability_videos.pyA 杖/魔晶赋予的技能(granted_by_scepter/ granted_by_shardCDN 视频名是 <hero>_aghanims_scepter/<hero>_aghanims_shard 而非技能 key(如 juggernaut_swift_slashjuggernaut_aghanims_scepter.webm)。 之前脚本用技能 key 拼 URL 导致 69 个赋予技能视频全部 404。新增 _cdn_name() 映射,本地文件名仍用 ability key(前端 app.js 按 ability key 请求,无需改动)。 重抓后 69 个视频全部到位(迅风斩、水晶克隆、雷云 等)。

[0.2.0] - 2026-07-27

Changed

  • 代码审查重构:提取 http_utils.py 公共模块,统一所有 fetch 脚本的 HTTP 请求、 UA、超时与图标下载逻辑;移除 requests 依赖(requirements.txt)。
  • 合并 fetch_stratz_matchups.py + fetch_synergies.pyfetch_stratz.py --mode matchups|synergies
  • fetch_cdn_templates.py / fetch_hero_portraits.py 改用 http_utils(不再依赖 requests)。
  • loc_format.py 新增导出 strip_html,统一 HTML 清理逻辑(fetch_hero_abilities.py / fetch_items_meta.py 原各有一份重复实现)。
  • fetch 脚本 JSON 输出统一为 indent=2(原 indent=1 / 紧凑 separators 混用)。
  • fetch_hero_abilities.py 主循环改为每 10 个英雄写一次 JSON(原每英雄写一次,O(n²) I/O)。
  • fetch_hero_items.py 循环内 collect_used_ids 改为增量更新(原全量重算)。
  • data/relations.json meta 中本机路径 C:\Users\... 脱敏为 dota2.xlsx

Fixed

  • fetch_items_meta.py:删除 strip_html 死代码(未导入 unescape,若被调用会 NameError)。
  • audit_relations.py:删除重复 missing_cache 死代码块;JSON 加载加 try/except 防文件损坏崩溃。
  • app.jsrenderBoardstate.data null 守卫(防 fetch pending 期间搜索触发崩溃)。
  • relations.py:删除 EXTRA_NAMES"圣堂/TA" 重复项(与 "圣堂/ta" 归一化后相同) 及 "axe":"axe" 等冗余自映射项。
  • hero_tags.py:注释「幻想系」→「幻象系」(与代码 TAG_ORDER 一致)。
  • item_fears.pyenrich_override_itemsnot isinstance(row, dict) 分支的 cost 死条件简化。
  • import_relations_xlsx.py"a仗" in t.lower() or "A仗" in t 冗余条件简化。

Removed

  • web/relations/style.css:删除未引用的 .item-row / .item-phase / .item-phase-fear 规则。
  • web/relations/app.js:删除死回退函数 onItemClick、死类名(hero-stats-left / shop-group-* / shop-column-*)、合并 state.selectedSkillIdstate.inspect

Added

  • 上分帝 Web英雄详情:基础属性条(力量/敏捷/智力 + 成长、初始生命/魔法与恢复; 附攻击/护甲/移速/攻击距离)。数据来自 OpenDota(fetch_cdn_templates.pydata/heroes.json),主属性高亮。
  • fetch_ability_videos.py:从 Steam CDN 批量拉取官网技能演示(webm/mp4), 默认限速约 1.5s+抖动,支持断点续传与 404 缓存;输出 assets/ability_videos/(不入库)。
  • 装备说明填充 Valve %token% 数值(如飓风长戟「飓风之力」); fetch_items_meta.py --reformat-desc,共用 loc_format.py
  • 上分帝 Web英雄详情底部分页:技能 / 核心装备 / 被克装备
  • 上分帝 Web新增顶级 物品 页(与英雄同级):对齐 dota2.com.cn 商店物品 11 列竖排(基础分类 / 合成分类),详情在右侧;目录来自官网 itemscategory/jsonfetch_item_shop.pydata/item_shop.json), 并展示合成组件(含卷轴)与「可升级为」。
  • 英雄页固定上方英雄网格高度;技能 / 核心装备 / 被克装备均可点击, 详情(含装备合成)展示在下方详情区(非弹窗)。
  • 「害怕」装备规则完善:莲花 spell_reflect、点目标技能自动关联莲花/林肯; data/hero_fear_overrides.json 补经典克制(如剑圣→莲花)。
  • 上分帝 Web技能区对齐官网:可点选技能 / 魔晶 / 神杖升级,右侧显示描述; 下方展示天赋树(25→10)。数据来自 Valve herodatafetch_hero_abilities.py)。
  • 上分帝 Web选中英雄后展示技能(图标 + 名称;可驱散角标;悬停看描述); 数据来自 data/hero_abilities.json,图标按需缓存到 assets/ability_icons/
  • 上分帝 Web「怕的装备」:fetch_items_meta.pyValve/OpenDota 描述 → 机制标签)、 fetch_hero_abilities.py(技能驱散等汇总)、item_fears.py(规则映射)→ data/items_meta.json / hero_abilities.json / hero_item_fears.json; 详情区在「核心」下增加「怕」行。例外标签见 data/item_tag_overrides.json。 本阶段仅 Web 站点,无对局内出装推荐。
  • 上分帝 Web选中英雄后,下方展示中文定位 tags 与核心成品装备(不再分阶段); fetch_hero_items.pyOpenDota 热度合并 + Valve 中文名,Steam CDN 图标 → data/hero_items.json / assets/item_icons/(过滤消耗品/中立/廉价件; 坚韧球/夜叉等中间件若该英雄常继续合成则隐藏,停在该件则保留)。
  • GSI 全量落盘:默认把每包 POST 追加到 samples/raw/<matchid>/gsi.jsonl gsi.dump_payloads / --dump-gsi / --no-dump-gsi)。
  • 前台窗口检测:gsi.require_foreground(默认 true)。选将跟踪时若前台不是 dota2.exe 则跳过本帧截屏/识别,且不消耗 strategy_tail_polls;切回后继续。
  • 选将角色标签悬浮层:overlay.enabled(默认 true)。跟踪过程中在顶栏已确认 英雄下方显示角色图标(Carry / Nuker / Initiator 等);点击穿透。
  • data/heroes.json 增加 roles 字段(来自 dotaconstants);fetch_cdn_templates.py 同步拉取。
  • data/heroes.json 增加中文口语别名 aliases(如斯拉达→大鱼人、主宰→剑圣); fetch_cdn_templates.py 重拉时按 key 合并保留,不覆盖手工收录。
  • data/heroes.json 增加英文缩写 abbr(小写列表,如 nec / vs / pa); 上分帝 Web搜索支持缩写且不区分大小写;重拉模板时保留该字段。
  • fetch_stratz_matchups.py + audit_relations.py:拉取 STRATZ 对位并与 OpenDota 交叉审计定性关系,输出 data/relations_audit.json
  • 定性关系库 data/relations.json(克制有向边 + 搭档 + 理由); import_relations_xlsx.py 可从选将笔记导入;serve_relations.py 三视图只读预览(改 JSON 后刷新)。
  • fetch_hero_portraits.py 下载 dota2.com/heroes 竖版头像到 assets/hero_portraits/, 供上分帝 Web网格使用(与匹配用 templates/cdn/ 分离)。
  • 英雄中文定位标签 tags(核心/辅助/推进/逃生/爆发/先手/控制/耐久/幻象); 上分帝 Web 页可筛选,不参与推荐打分。
  • 上分帝 Web属性图标改用 dota2.com 官方素材(assets/attr_icons/),不再手绘。
  • 选将 Top-3 推荐改为读定性关系:+克制敌方 / −被敌方克 / +己方搭档; 叠层左上角青方标显示名次 1/2/3。
  • draft JSON / GSI self 透传 accountidsteamid

Changed

  • 上分帝 Web英雄详情(#detail):贴视口底部展示(margin-top: auto,高度仍按内容收缩); 与上方英雄选择区保留约 16px 间距;标题 / 属性条 / 分页 / 技能与装备行 / 检视区整体水平居中(最大宽约 820px),长描述在居中容器内仍左对齐。物品页布局未改。
  • 上分帝 Web技能详情区不再重复放大技能图标;顶栏选中态即可识别,详情只保留名称 / 标签 / 驱散 / 描述(核心/怕装详情仍显示装备大图)。
  • 上分帝 Web先天技能统一使用共用金色水滴图标 assets/ability_icons/innate.png (多数 innate 在 Steam dota_react/abilities 上 404),技能行与详情区不再破图占位。
  • 上分帝 Web英雄详情:技能图标与核心/怕装列表图标加大(技能 68px、装备 72×54), 便于点选;商店页 .shop-item 尺寸未改。
  • 物品页详情面板改为与 11 列商店并排居中集群(sticky),贴在商店右侧约 16px, 不再固定贴视口右缘;窄屏仍堆叠置顶。
  • 物品页:#items-view 限制为视口内滚动容器,避免 sticky 详情随窗口滚动盖住商店列; 空状态去掉过大 min-height,面板高度随内容收缩。
  • 上分帝 Web天赋树改为官网弹层风格(居中「天赋树」、25→10 圆形等级徽标、左右选项行)。
  • heroes.json 迁至 data/heroes.json;可再生成的对位/审计/报告文件改由 .gitignore 忽略。
  • assets/role_icons/ 改用 Valve 游戏内选人筛选图标(filter_*);灰蓝底板 + 深色 符号,透明角填品红 chroma,叠层不再出现黑边。
  • 项目定名:上分帝 / Climperor(目录 climperor),由 dota2-draft-vision 迁出独立仓库。
  • 放弃 real 实拍模板库:删除 build_library.pytemplates/real/;匹配仅使用 CDN 层。
  • 移除 match.cdn_penaltyevaluate.py --cdn-only(双层库对比已无意义)。
  • 模板加载 API 简化为 (hero_key, image)
  • GSI 会话截图按对局写入 samples/raw/<matchid>/
  • 运行产物纳入 .gitignorepreview/results/failures/samples/raw/
  • 文档拆分为 README(操作)、DESIGN(决策)、AGENTS(协作)、CHANGELOG(变更)。
  • DESIGN.md / AGENTS.md 补录原型会话结论:顶栏皮肤时机、决策禁改判原因、 real 库审计结论、无法靠 GSI 卡「皮肤前」单帧等。
  • 本人顶栏槽位只使用 GSI team_slot;移除截屏名字亮度识别「自己是第几格」。

Removed

  • real 库补充流水线与相关验收指标。
  • 仓库内历史 preview/results/ 调试产物。
  • roles._detect_self 视觉认槽位备用路径。

Fixed

  • 上分帝 Web英雄卡片 title 垃圾清理:data/relations.json 的 counters 被 relations_patch_draft.json 注入 100 条 reason 为 opendota_adv/stratz_adv 胜率数值的边(违反 meta.note: no winrate 与 AGENTS.md「不要用胜率/场次表达 机制克制」),拼进 hover title 显示为「opendota_adv=0.13; stratz_adv=4.47」 之类。删除这 100 条 numeric-reason 边(含水人 axe/hoodwink/windrunner → morphling 三条),保留 5 条定性 + 149 条空 reason counters + 11 条 synergies(空 reason 经 .filter(Boolean) 不进 title)。
  • 上分帝 Web英雄页:#detail 不再 flex: 1 撑满网格下方剩余视口(短内容时大片黑底空白); 改为按内容收缩(fit-content),并用 max-height 限制长文案在面板内滚动。
  • 上分帝 Web技能行对齐官网:左起「天赋树图标 → 先天圆形图标 → 方形技能」;天赋详情改为 悬停/点击浮动弹层(不再内联占高);图标见 assets/ability_icons/talent_tree.png
  • 上分帝 Web天赋树数值修复:天赋 name_loc{s:bonus_<sv>} token 原全部 显示为 +?/-?format_loc 只读 values_floattalent_rows 只传天赋 自身空 special_values)。改为跨技能按 talent key 索引 bonuses + sv 名 /单 token 配对两层兜底填 bonus.value;重生成 data/hero_abilities.json 1016 条全部恢复。naga_siren「捕捞速度」上游缺 bonus,经 data/talent_overrides.json 手工补 +125
  • 上分帝 Web核心装备「阿哈利姆福佑」→「阿哈利姆神杖」:ultimate_scepter_2 (id 271) 是神杖 (id 108) 的激活形态,OpenDota 分开计数导致 37 个英雄 核心装备列表出现「福佑」甚至神杖+福佑并存。fetch_hero_items.py 新增 fold_blessing_into_scepter 把 blessing 计数按 max 合并入 scepter 重生成 data/hero_items.json 统一显示「阿哈利姆神杖」。
  • (继承自原型)CDN 头像按顶栏窗口裁切,而非中心正方形;CDN-only 即可高准确率。
  • (继承自原型)天梯段位条 / 勋章遮罩匹配;选人多帧 + 决策禁改判规避皮肤; best 帧优先选人阶段;本人英雄以 GSI 覆盖。

[0.1.0] - 2026-07-25

Added

  • 决策时间顶栏 10 格模板匹配识别。
  • 相对坐标 ROI、自动标定(玩家颜色条)。
  • Steam CDN 全英雄模板拉取(fetch_cdn_templates.py)。
  • GSI 触发的选将会话跟踪(gsi_watch.py / draft_session.py)。
  • 位置文字、禁用网格、模式字辅助识别。
  • 天梯 UI 遮罩与会话层皮肤策略。