feat: move the one-click update into the system settings menu

The update console stops being a page of its own and becomes the last section
of 系统设置 (data-section="update", gated by update:read): the sidebar entry
and page-system-update are gone, the console markup lives in
settings-section-update, and the settings menu is where an operator now finds
it. #system-update keeps working as an alias - both hash parsers normalize it
to settings + the update section - so existing deep links and docs keep landing.

Polling follows the new home: leaving the settings page (router) or switching
to another section (settings.js) stops it, selecting the section loads the
console, and returning to the settings page with the section still selected
re-reads the install tree and re-arms the poller (a frozen progress read is
the "nothing is happening" picture an operator must never be shown).

The guard suite follows the move: the old nav/page assertions become "must not
exist", the new ones pin the section, the alias, the poller handoff and the
retired nav.systemUpdate key (settings.nav.update replaces it in zh/EN/RU).
README and both developer/deployment guides say 系统设置 → 一键更新.
This commit is contained in:
Sycun committed 2026-10-07 22:52:56 +08:00
1 parent 27c1ff6573
commit cbd8073beb
16 files changed
+140 -73

No files matched your search

+10 -1
View File
@@ -46718,7 +46718,7 @@ html[data-theme="dark"] { --tool-blocked-color: #f4bc62; }
/* ---------------------------------------------------------------------------
一键更新控制台(system-update):这里说的每一句状态都要能被眼睛分区——
一键更新控制台(系统设置页的 settings-section-update 分区):这里说的每一句状态都要能被眼睛分区——
本机事实、远端比较、能不能点、正在跑的进度、以及跑完的结论。
ok/warn/danger 三色是给"说谎"留的对照组:查不了必须是 warn/danger,不能长得像 ok。
--------------------------------------------------------------------------- */
@@ -46728,6 +46728,15 @@ html[data-theme="dark"] { --tool-blocked-color: #f4bc62; }
gap: 20px;
}
/* 分区标题行:标题在左、刷新在右;窄屏放不下就换行,别把标题压扁 */
.update-section-head {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px;
}
.update-intro {
color: var(--text-secondary);
margin: 0 0 12px;