Show login progress immediately and stop auth 401 hangs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-12 20:03:34 +08:00
parent f92cb85a4a
commit 5bcaf7fd2d
10 changed files with 152 additions and 74 deletions

View file

@ -5,9 +5,9 @@
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>oliver</title>
<!-- Avoid render-blocking external fonts (can stall first paint ~30s on blocked networks). -->
<link rel="stylesheet" href="/admin/assets/styles.css?v=20260812-18" />
<link rel="stylesheet" href="/admin/assets/theme-deepseek.css?v=20260812-18" />
<link rel="stylesheet" href="/admin/assets/theme-presets.css?v=20260812-18" />
<link rel="stylesheet" href="/admin/assets/styles.css?v=20260812-19" />
<link rel="stylesheet" href="/admin/assets/theme-deepseek.css?v=20260812-19" />
<link rel="stylesheet" href="/admin/assets/theme-presets.css?v=20260812-19" />
<style>
/* First paint before app.js runs: keep admin from showing a blank dark screen. */
.admin-boot-splash {
@ -129,33 +129,33 @@
<script type="importmap">
{
"imports": {
"/admin/assets/app.js": "/admin/assets/app.js?v=20260812-18",
"/admin/assets/js/asset-v.js": "/admin/assets/js/asset-v.js?v=20260812-18",
"/admin/assets/js/core.js": "/admin/assets/js/core.js?v=20260812-18",
"/admin/assets/js/i18n/index.js": "/admin/assets/js/i18n/index.js?v=20260812-18",
"/admin/assets/js/i18n/messages-en.js": "/admin/assets/js/i18n/messages-en.js?v=20260812-18",
"/admin/assets/js/i18n/messages-zh.js": "/admin/assets/js/i18n/messages-zh.js?v=20260812-18",
"/admin/assets/js/main.js": "/admin/assets/js/main.js?v=20260812-18",
"/admin/assets/js/pages/attachments.js": "/admin/assets/js/pages/attachments.js?v=20260812-18",
"/admin/assets/js/pages/audit.js": "/admin/assets/js/pages/audit.js?v=20260812-18",
"/admin/assets/js/pages/authz.js": "/admin/assets/js/pages/authz.js?v=20260812-18",
"/admin/assets/js/pages/legacy-admin.js": "/admin/assets/js/pages/legacy-admin.js?v=20260812-18",
"/admin/assets/js/pages/legacy.js": "/admin/assets/js/pages/legacy.js?v=20260812-18",
"/admin/assets/js/pages/login.js": "/admin/assets/js/pages/login.js?v=20260812-18",
"/admin/assets/js/pages/memory.js": "/admin/assets/js/pages/memory.js?v=20260812-18",
"/admin/assets/js/pages/models.js": "/admin/assets/js/pages/models.js?v=20260812-18",
"/admin/assets/js/pages/plugins.js": "/admin/assets/js/pages/plugins.js?v=20260812-18",
"/admin/assets/js/pages/profile.js": "/admin/assets/js/pages/profile.js?v=20260812-18",
"/admin/assets/js/pages/scheduled-jobs.js": "/admin/assets/js/pages/scheduled-jobs.js?v=20260812-18",
"/admin/assets/js/pages/skills.js": "/admin/assets/js/pages/skills.js?v=20260812-18",
"/admin/assets/js/pages/stack.js": "/admin/assets/js/pages/stack.js?v=20260812-18",
"/admin/assets/js/pages/users.js": "/admin/assets/js/pages/users.js?v=20260812-18",
"/admin/assets/js/pages/workspace-paths.js": "/admin/assets/js/pages/workspace-paths.js?v=20260812-18",
"/admin/assets/js/router.js": "/admin/assets/js/router.js?v=20260812-18",
"/admin/assets/js/state.js": "/admin/assets/js/state.js?v=20260812-18"
"/admin/assets/app.js": "/admin/assets/app.js?v=20260812-19",
"/admin/assets/js/asset-v.js": "/admin/assets/js/asset-v.js?v=20260812-19",
"/admin/assets/js/core.js": "/admin/assets/js/core.js?v=20260812-19",
"/admin/assets/js/i18n/index.js": "/admin/assets/js/i18n/index.js?v=20260812-19",
"/admin/assets/js/i18n/messages-en.js": "/admin/assets/js/i18n/messages-en.js?v=20260812-19",
"/admin/assets/js/i18n/messages-zh.js": "/admin/assets/js/i18n/messages-zh.js?v=20260812-19",
"/admin/assets/js/main.js": "/admin/assets/js/main.js?v=20260812-19",
"/admin/assets/js/pages/attachments.js": "/admin/assets/js/pages/attachments.js?v=20260812-19",
"/admin/assets/js/pages/audit.js": "/admin/assets/js/pages/audit.js?v=20260812-19",
"/admin/assets/js/pages/authz.js": "/admin/assets/js/pages/authz.js?v=20260812-19",
"/admin/assets/js/pages/legacy-admin.js": "/admin/assets/js/pages/legacy-admin.js?v=20260812-19",
"/admin/assets/js/pages/legacy.js": "/admin/assets/js/pages/legacy.js?v=20260812-19",
"/admin/assets/js/pages/login.js": "/admin/assets/js/pages/login.js?v=20260812-19",
"/admin/assets/js/pages/memory.js": "/admin/assets/js/pages/memory.js?v=20260812-19",
"/admin/assets/js/pages/models.js": "/admin/assets/js/pages/models.js?v=20260812-19",
"/admin/assets/js/pages/plugins.js": "/admin/assets/js/pages/plugins.js?v=20260812-19",
"/admin/assets/js/pages/profile.js": "/admin/assets/js/pages/profile.js?v=20260812-19",
"/admin/assets/js/pages/scheduled-jobs.js": "/admin/assets/js/pages/scheduled-jobs.js?v=20260812-19",
"/admin/assets/js/pages/skills.js": "/admin/assets/js/pages/skills.js?v=20260812-19",
"/admin/assets/js/pages/stack.js": "/admin/assets/js/pages/stack.js?v=20260812-19",
"/admin/assets/js/pages/users.js": "/admin/assets/js/pages/users.js?v=20260812-19",
"/admin/assets/js/pages/workspace-paths.js": "/admin/assets/js/pages/workspace-paths.js?v=20260812-19",
"/admin/assets/js/router.js": "/admin/assets/js/router.js?v=20260812-19",
"/admin/assets/js/state.js": "/admin/assets/js/state.js?v=20260812-19"
}
}
</script>
<script type="module" src="/admin/assets/app.js?v=20260812-18" onerror="(function(){var lang='zh';try{lang=String(localStorage.getItem('ops_admin_lang')||'zh').toLowerCase();}catch(e){}if(lang!=='en')lang='zh';var msg=lang==='en'?{t:'Failed to load admin scripts',h:'Confirm /admin/assets/app.js and /admin/assets/js/ are reachable.'}:{t:'无法加载管理台脚本',h:'请确认 /admin/assets/app.js 与 /admin/assets/js/ 可访问。'};var s=document.getElementById('admin-boot-splash');if(s){var a=s.querySelector('.admin-boot-splash__title span:last-child');var b=s.querySelector('.admin-boot-splash__muted');if(a)a.textContent=msg.t;if(b)b.textContent=msg.h;}})()"></script>
<script type="module" src="/admin/assets/app.js?v=20260812-19" onerror="(function(){var lang='zh';try{lang=String(localStorage.getItem('ops_admin_lang')||'zh').toLowerCase();}catch(e){}if(lang!=='en')lang='zh';var msg=lang==='en'?{t:'Failed to load admin scripts',h:'Confirm /admin/assets/app.js and /admin/assets/js/ are reachable.'}:{t:'无法加载管理台脚本',h:'请确认 /admin/assets/app.js 与 /admin/assets/js/ 可访问。'};var s=document.getElementById('admin-boot-splash');if(s){var a=s.querySelector('.admin-boot-splash__title span:last-child');var b=s.querySelector('.admin-boot-splash__muted');if(a)a.textContent=msg.t;if(b)b.textContent=msg.h;}})()"></script>
</body>
</html>