Commit Graph

5 Commits

Author SHA1 Message Date
f40e54287b fix(web): 极窄屏备案号不再顶到按钮;mini 叶签两端改为渐变淡出
1) 备案号与自定义按钮只剩 1px
   实测 320x640:备案号换行成两行、高 66px,占据距底 11..77;而搜索球/
   按钮组固定在 bottom:76px → 两者实测只剩 1px(视觉上已贴上)。
   修法:≤380px 时把按钮上移到 bottom:88px,并收紧页脚 gap/padding
   (两行高度仍 66px)→ 实测净间隙 11px。≥390px 时备案号是单行 39px,
   间隙本就充足,保持不变。

2) mini 顶部叶签被两侧按钮硬切
   结构是 [‹按钮 34px][滚动行][›按钮 34px],滚动行 overflow-x:auto
   (内容 858px / 可视 294px),卡片直接在滚动行边缘被切断,没有任何过渡。
   修法:给滚动行加 mask-image 两端各 24px 渐变淡出,并用 :has() 关联
   翻页按钮的 disabled 状态 —— 已经在尽头的一侧不再淡出(两端都到头则
   完全不遮罩),避免"到头了还在渐隐"的错觉。
   实测:最左时 mask 为「左侧实心 + 右侧渐隐」,滚到最右变为
   「左侧渐隐 + 右侧实心」。
2026-09-11 19:18:00 +08:00
8ba5e5117b feat(web): 工作空间内嵌网页 + 控件收边 + 页脚去重 + 窄屏不再重叠
1) 工作空间真的在中间打开网页
   Dashy 的面板就是 iframe,但它的 launchApp() 只在 target 不是 newtab 时
   才把 URL 灌进 iframe;而且侧栏项目大多没有 per-item target,Dashy 走的是
   Vue 直接改 iframe.src 的路径 —— 根本不经过 window.open,导致判定逻辑被
   绕过(实测:Gitea 仍被内嵌、空白)。现在两条路径统一进 verifyAndShow():
   先探测再决定内嵌还是明确提示;被拒时还会清空 iframe 的 src。

2) 控件在工作空间收边
   中间嵌的是别人的应用,常驻控件会遮挡。搜索球收左边缘、右下角两个按钮
   组成 dock 整组收右边缘、备案号收下边缘,各露 14px(备案号 13px),
   鼠标移入或点击、聚焦时滑出展开。只在工作空间生效。

3) 修 iframe 撑高页面 77px
   Dashy 的 .web-content iframe 是 position:absolute,包含块是 #dashy 而非
   .web-content,外层 overflow:hidden 拦不住它,它按 #dashy 高度撑到 814px
   (164+814=977 正好等于页面 scrollHeight)。补 position:static 后归零。

4) 首页不再出现两个备案号
   Vue 异步挂载,navi.js 可能先补了一份页脚,之后 Dashy 的页脚才出现;
   原来的守卫只判断 .navi-footer 是否存在,不会回收自己早先注入的那份。
   新增 dashyFooterNode() 区分两者,发现 Dashy 的就把我们补的移除。

5) 窄屏展开搜索框不再压住右下按钮组
   手机端展开宽度是 calc(100% - 86px),而按钮组占最后 114px → 重叠 38px。
   改为按按钮组真实占位预留(≥600px: min(560px, 100% - 158px);
   ≤599px: calc(100% - 132px));≤380px 时输入框会窄到不可用,改为
   临时隐藏按钮组(用 visibility 而非 transform,因为 prefers-reduced-motion
   会强制 transform:none)。
2026-09-11 19:04:38 +08:00
da196abcb5 feat(web): 隐藏原生设置、圆形视图切换、工作空间改列表、三视图标题统一
用户提出的四条,都基于实测数据而不是猜测:

1) 隐藏 Dashy 原生设置入口
   顶栏的 .config-launcher(齿轮+铅笔+调色板)与我们的 /admin/ 重复,
   连同 .options-trigger/.settings-outer 一起隐藏。

2) 视图切换图标改成圆形,紧贴自定义入口左侧
   原生切换按钮是侧栏底部的方形图标(.switch-view-buttons),已隐藏;
   改为右下角圆形悬浮按钮 .navi-view-switch,点开是「首页/极简/工作空间」
   菜单并标出当前视图。
   顺带修掉 2px 错位:管理入口是内容盒(48+2px 边框=50),视图按钮是
   边框盒(48),并排时差 2px;给管理入口补 box-sizing: border-box。

3) 工作空间「点了没反应」
   读 Dashy 自己的 Workspace 组件(assets/Workspace-*.js)得到结论:
   右侧面板就是一个 iframe,launchApp() 只有 target 不是 newtab 才把 URL
   灌进面板;我们全局 openingMethod: newtab,所以每次点击都走 window.open
   分支,this.url 恒为空 → 面板永远空白。
   就算灌进去也没用:Gitea 实测 X-Frame-Options: sameorigin 拒绝被嵌
   (Refused to display … in a frame)。
   所以改成:点左侧分组 → 右侧列出该分组应用卡片(数据取自
   /admin/api/sections),不依赖目标站点是否允许 iframe,首页仍保持新标签页。

4) 三视图标题割裂
   实测 /minimal 是 48px 居中 -1.92px,而 / 与 /workspace 是顶栏里 40px
   左对齐、无字距。现在三个视图共用同一条规则(clamp(1.75rem,4vw,2.75rem)、
   700、-0.035em、居中;移动端 clamp(1.6rem,8vw,2.2rem)),副标题也居中置灰。

另外:工作空间面板原本用 position: fixed 钉在视口中间(1364×654,上距顶栏
7px、下距搜索栏 8px),把页面切成「顶栏/大方块/底部」三段;改为正常文档流,
内容多时页面自然滚动。
2026-09-11 18:17:23 +08:00
80b0e5f51e feat(web): 搜索框收起态 + admin 入口 + 修正多余滚动
- 搜索栏默认收起为左下角放大镜悬浮球(52/56px),点它展开成输入框,
  输入框内左侧仍是同一个放大镜,点它收起;Esc 也可收起
- Dashy 页面补右下角 /admin/ 悬浮入口(原先没有任何管理入口)
- 短页面不再凭空可滚动:body 留白 104->84px,并给 #dashy 扣掉同样高度
  (Dashy 的 #dashy 本已撑满 100vh,叠加留白就多出约 134px 滚动)
- 补的备案号页脚改为固定在搜索栏正上方,不再参与文档流撑高页面
- 弹层打开时搜索栏与管理入口一并让位
2026-09-11 17:03:33 +08:00
9eb8214fab fix(web): 搜索栏改为底部悬浮,补极简视图页脚与整体动效
- 搜索栏 position:fixed 悬浮在视口下侧,任何视图/滚动位置都可见;
  原先是流式跟在页脚之后,手机上要滚到底才看得到
- 极简视图(/minimal)与工作空间不渲染 Dashy 页脚,备案号整段消失;
  navi.js 从只读 pageinfo 取回页脚补一份(DOMParser,不用 innerHTML)
- 空分组不再渲染成空玻璃条(:not(:has(a.item))),修掉 mini 页底部一排空框
- 图标统一 56/48px 容器 + object-fit:contain,修 24px 与 56px 混排
- 备案号页脚改为胶囊样式
- 新增动效层:视图/卡片淡入、搜索栏滑入、悬停位移,全部只动
  transform/opacity 并遵循 prefers-reduced-motion
2026-09-11 16:25:26 +08:00