v0.5.59: item counter evidence for fears, catch up Web features to site version.

Ship OpenDota counter-stats reordering for feared items, finalize SITE_VERSION/docs for rankings/streamers/trends/matches/mechanics and draft archetypes, and ignore regenerable Web data caches.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
voson
2026-07-29 02:11:49 +08:00
co-authored by Cursor
parent 37769580f5
commit 3ec8007077
72 changed files with 20669 additions and 2105 deletions
+73 -7
View File
@@ -3,13 +3,14 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>上分帝</title>
<link rel="stylesheet" href="/style.css" />
<title>DOTA2 上分帝</title>
<link rel="icon" href="/ui-icon/dota2_logo.png" type="image/png" />
<link rel="stylesheet" href="/style.css?v=0.5.59" />
</head>
<body>
<header class="topbar">
<div class="brand">
<img class="brand-logo" src="ui-icon/dota2_logo.png" alt="Dota 2" />
<div class="brand" aria-label="Dota 2 上分帝">
<img class="brand-logo" src="/ui-icon/dota2_logo_wordmark.png" alt="Dota 2" />
<span class="brand-title">上分帝</span>
</div>
<a
@@ -24,6 +25,10 @@
</a>
<nav class="main-tabs" aria-label="主分页">
<button type="button" class="main-tab active" data-page="heroes">英雄</button>
<button type="button" class="main-tab" data-page="rankings">排行</button>
<button type="button" class="main-tab" data-page="streamers">主播</button>
<button type="button" class="main-tab" data-page="trends">走势</button>
<button type="button" class="main-tab" data-page="mechanics">机制</button>
<button type="button" class="main-tab" data-page="items">物品</button>
<button type="button" class="main-tab" data-page="patches">版本</button>
</nav>
@@ -44,6 +49,67 @@
<div class="columns" id="columns"></div>
</main>
<main id="rankings-view" class="board rankings-board hidden">
<div class="rankings-cluster">
<div class="rankings-center-wrap">
<div class="rankings-body" id="rankings-body"></div>
<aside class="rankings-aside" aria-label="排行筛选">
<h2 class="rankings-title">
<span class="rankings-title-row">
<span class="rankings-kicker" id="rankings-kicker">Immortal 排行榜</span>
<span id="rankings-tip-slot"></span>
</span>
</h2>
<div class="rankings-regions" id="rankings-regions" role="tablist" aria-label="选择地区"></div>
<p class="rankings-sub" id="rankings-sub"></p>
</aside>
</div>
</div>
</main>
<main id="streamers-view" class="board rankings-board streamers-board hidden">
<div class="rankings-cluster">
<div class="rankings-center-wrap streamers-center-wrap">
<div class="rankings-body streamers-body" id="streamers-body"></div>
<footer class="streamers-foot" id="streamers-foot" aria-hidden="true"></footer>
</div>
</div>
</main>
<main id="trends-view" class="board rankings-board trends-board hidden">
<div class="rankings-cluster">
<div class="rankings-center-wrap trends-center-wrap">
<div class="rankings-body" id="trends-body"></div>
<aside class="rankings-aside" aria-label="走势筛选">
<h2 class="rankings-title">
<span class="rankings-title-row">
<span class="rankings-kicker" id="trends-kicker">过去 8 周走势</span>
</span>
</h2>
<div class="trends-brackets" id="trends-brackets" aria-label="选择段位"></div>
<div class="trends-sort" id="trends-sort" role="tablist" aria-label="排序"></div>
<p class="rankings-sub" id="trends-sub"></p>
</aside>
</div>
</div>
</main>
<main id="mechanics-view" class="board rankings-board mechanics-board hidden">
<div class="rankings-cluster">
<div class="rankings-center-wrap mechanics-center-wrap">
<div class="rankings-body mechanics-body" id="mechanics-body"></div>
<aside class="rankings-aside" aria-label="机制筛选">
<h2 class="rankings-title">
<span class="rankings-title-row">
<span class="rankings-kicker">机制查询</span>
</span>
</h2>
<div class="mechanics-effects" id="mechanics-effects" aria-label="选择状态效果"></div>
</aside>
</div>
</div>
</main>
<main id="items-view" class="board items-board hidden">
<div class="items-cluster">
<div class="items-main">
@@ -70,8 +136,8 @@
<section class="detail" id="detail" aria-live="polite"></section>
<script src="/config.js?v=0.4.2"></script>
<script src="/router.js?v=0.4.2"></script>
<script src="/app.js?v=0.4.2"></script>
<script src="/config.js?v=0.5.59"></script>
<script src="/router.js?v=0.5.59"></script>
<script src="/app.js?v=0.5.59"></script>
</body>
</html>