diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9091988..e6f3611 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@
## [Unreleased]
+## [0.5.85] - 2026-07-29
+
+### Changed
+
+- 「比赛」场次摘要「共 N 场 · 第 X/Y 页」移到底部分页区,与页码同栏。
+
## [0.5.84] - 2026-07-29
### Fixed
diff --git a/web/export_relations_site.py b/web/export_relations_site.py
index eb9d7f3..5c88785 100644
--- a/web/export_relations_site.py
+++ b/web/export_relations_site.py
@@ -51,7 +51,7 @@ from shared.paths import (
from serve_relations import WEB_DIR, build_payload
-SITE_VERSION = "0.5.84"
+SITE_VERSION = "0.5.85"
DEFAULT_OSS_BASE = "https://climperor.oss-cn-shanghai.aliyuncs.com"
diff --git a/web/frontend/app.js b/web/frontend/app.js
index 3e2d0f7..691a416 100644
--- a/web/frontend/app.js
+++ b/web/frontend/app.js
@@ -3732,7 +3732,6 @@ function renderMatchesPage() {
const body = $("#matches-body");
const originsEl = $("#matches-origins");
const playersEl = $("#matches-players");
- const sub = $("#matches-sub");
if (!body) return;
const origin = MATCH_ORIGIN_FILTERS.some((o) => o.id === state.matchesOrigin)
@@ -3813,7 +3812,6 @@ function renderMatchesPage() {
if (!hasData) {
body.innerHTML =
'
暂无比赛数据(请运行 python web/fetch_pro_matches.py)
';
- if (sub) sub.textContent = "";
return;
}
@@ -3837,12 +3835,9 @@ function renderMatchesPage() {
}
const start = (page - 1) * pageSize;
const rows = allRows.slice(start, start + pageSize);
-
- if (sub) {
- sub.textContent = total
- ? `共 ${total} 场 · 第 ${page}/${pageCount} 页`
- : "";
- }
+ const summary = total
+ ? `共 ${total} 场 · 第 ${page}/${pageCount} 页`
+ : "";
if (!rows.length) {
body.innerHTML = state.matchesPlayerId
@@ -3854,20 +3849,33 @@ function renderMatchesPage() {
const wrap = document.createElement("div");
wrap.className = "matches-page-wrap";
wrap.appendChild(buildMatchList(null, rows, { showHero: true }));
- if (pageCount > 1) {
- wrap.appendChild(
- buildMatchesPager(page, pageCount, (next) => {
- state.matchesPage = next;
- syncStateToUrl();
- renderMatchesPage();
- const board = $("#matches-view");
- if (board) board.scrollTop = 0;
- })
- );
- }
+ wrap.appendChild(
+ buildMatchesFoot(summary, page, pageCount, (next) => {
+ state.matchesPage = next;
+ syncStateToUrl();
+ renderMatchesPage();
+ const board = $("#matches-view");
+ if (board) board.scrollTop = 0;
+ })
+ );
body.replaceChildren(wrap);
}
+function buildMatchesFoot(summaryText, page, pageCount, onGo) {
+ const foot = document.createElement("div");
+ foot.className = "matches-foot";
+ if (summaryText) {
+ const summary = document.createElement("p");
+ summary.className = "matches-foot-summary";
+ summary.textContent = summaryText;
+ foot.appendChild(summary);
+ }
+ if (pageCount > 1) {
+ foot.appendChild(buildMatchesPager(page, pageCount, onGo));
+ }
+ return foot;
+}
+
function buildMatchesPager(page, pageCount, onGo) {
const nav = document.createElement("nav");
nav.className = "matches-pager";
diff --git a/web/frontend/config.js b/web/frontend/config.js
index 21105b8..0e72fa2 100644
--- a/web/frontend/config.js
+++ b/web/frontend/config.js
@@ -1,4 +1,4 @@
/* Local defaults; production export overwrites via export_relations_site.py. */
-var SITE_VERSION = "0.5.84";
+var SITE_VERSION = "0.5.85";
var ABILITY_VIDEO_BASE = "";
var STATIC_ASSET_BASE = "";
diff --git a/web/frontend/index.html b/web/frontend/index.html
index e51f976..191c5c6 100644
--- a/web/frontend/index.html
+++ b/web/frontend/index.html
@@ -5,8 +5,8 @@
DOTA2 上分帝
-
-
+
+
@@ -166,8 +165,8 @@
-
-
-
+
+
+