feat: PWA 移动端适配、响应式三档布局与书签认证

前端:
  - 新增 PWA manifest、透传 Service Worker、iOS 全屏 meta 标签
  - 响应式断点细化为手机(<768px)/平板(<1024px)/桌面三档
  - ReaderToolbar 操作按钮在窄屏折叠为下拉菜单,按钮文案响应式精简
  - BilingualViewer 手机端强制单列堆叠,100dvh + safe-area-inset-top 适配
  - Bookmarklet 去硬编码 localhost,动态注入 origin + bookmarklet_key 完成认证
  - 修复 useAutoScroll 改用容器级 scrollTo(scrollHeight)
  - PaperCard 操作区 flex-wrap / SearchPanel 移动端垂直布局

  后端:
  - 登录返回 bookmarklet_key(SHA-1 哈希),auth_middleware 对书签导入路径额外放行 Bearer token
  - CORS 白名单扩展到全部私有网段,SameSite cookie 改为 Lax 兼容局域网访问
  - 新增 pdf_inline_middleware,PDF 文件强制内联显示防移动端下载
  - 修复 meta.rs datetime 列别名缺失 / 登录错误兼容 {error} 对象格式
This commit is contained in:
fmq
2026-07-01 18:57:21 +08:00
parent f885c0a4a8
commit 26d3b2fc02
18 changed files with 388 additions and 71 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

+17
View File
@@ -0,0 +1,17 @@
{
"short_name": "Astro科研",
"name": "Astro科研",
"icons": [
{
"src": "logo.png",
"type": "image/png",
"sizes": "512x512",
"purpose": "any maskable"
}
],
"start_url": "/",
"display": "standalone",
"orientation": "any",
"theme_color": "#ffffff",
"background_color": "#ffffff"
}
+15
View File
@@ -0,0 +1,15 @@
// dashboard/public/sw.js
// 极简 PWA 通用 Service Worker,仅作请求透传,不作本地缓存以防破坏 SSE 及 RAG 的动态交互。
self.addEventListener('install', () => {
self.skipWaiting();
});
self.addEventListener('activate', (event) => {
event.waitUntil(self.clients.claim());
});
self.addEventListener('fetch', (event) => {
// 直接透传,不拦截或缓存任何请求
event.respondWith(fetch(event.request));
});