Files
HomeDash/conf.example.yml
HomeDash Bot 76a6a83e7d feat(web): 不支持内嵌时明确弹层;修掉被 promise 吞掉的 ReferenceError
1) 点不支持在工作区显示的应用 → 弹出提示卡片
   标题「该应用不支持在工作区显示」+ 域名 + 服务器返回的原因 +
   「在新标签页打开 / 知道了」两个按钮;面板里同时保留同样的说明。
   之前只在面板里显示一行字,用户点了之后缺少明确反馈。

2) 修 ReferenceError: openUrl is not defined(线上真实故障)
   setWorkspaceState 第 4 个参数早先从 openUrl 改名为 note 时,blocked
   分支漏改,于是每次被拒内嵌都在函数内部抛异常,异常沿 promise 链被吞,
   导致后面的弹层根本没有执行、面板提示也只渲染到一半(URL 行和按钮缺失)。
   教训:验收必须采集 Runtime.exceptionThrown,并且断言交互元素真的存在;
   只断言"状态=blocked + 提示文字前缀"会恰好掩盖这类错误。
2026-09-11 19:52:19 +08:00

33 lines
7.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

appConfig:
theme: jianf-glass
dayTheme: default
nightTheme: midnight
customColors: {}
externalStyleSheet: []
webSearch:
searchEngine: custom
customSearchEngine: /search?q=
openingMethod: newtab
customCss: "/* ═══ JianF 玻璃拟态主题 v2 ═══\n 注意:必须按 Dashy 真实渲染出的类名写。此前版本用了 .tile / .item-group /\n .item-group-outer —— 这三个类在页面里并不存在(querySelectorAll 计数为 0),\n 所以大部分规则是死代码,界面才一直显得平。\n\n 真实结构(自内向外):\n a.item ← 卡片表面(灰底就来自这里)\n div.item-wrapper ← 网格单元\n div.there-are-items\n div.content-inner\n div.collapsible-content\n div.collapsable.section_<名字> ← 分组容器\n div.item-group-container\n */\n\n/* ── 背景 ──\n .home 有不透明背景会盖住 body 渐变,必须一起透明掉,否则彩色背景完全看不见。 */\nhtml[data-theme] body {\n background:\n radial-gradient(1200px 720px at 6% -12%, #a5b4fc 0%, transparent 56%),\n radial-gradient(1000px 640px at 96% 2%, #7dd3fc 0%, transparent 52%),\n radial-gradient(900px 700px at 46% 112%, #f0abfc 0%, transparent 56%),\n linear-gradient(160deg, #eef2ff 0%, #f8fafc 45%, #ecfeff 100%) !important;\n background-attachment: fixed !important;\n min-height: 100vh;\n}\nhtml[data-theme]\
\ .home {\n background: transparent !important;\n}\n\n/* ── 顶栏 ── */\nhtml[data-theme] header {\n background: rgba(255,255,255,.44) !important;\n backdrop-filter: blur(18px) saturate(180%) !important;\n -webkit-backdrop-filter: blur(18px) saturate(180%) !important;\n border-bottom: 1px solid rgba(255,255,255,.6) !important;\n box-shadow: 0 6px 24px rgba(15,23,42,.06) !important;\n}\n\n/* ── 卡片:真正的表面是 a.item ── */\nhtml[data-theme] a.item {\n background: rgba(255,255,255,.52) !important;\n backdrop-filter: blur(18px) saturate(180%) !important;\n -webkit-backdrop-filter: blur(18px) saturate(180%) !important;\n border: 1px solid rgba(255,255,255,.66) !important;\n border-radius: 18px !important;\n box-shadow:\n 0 6px 18px rgba(15,23,42,.07),\n inset 0 1px 0 rgba(255,255,255,.85) !important;\n transition: transform .28s cubic-bezier(.34,1.2,.64,1),\n box-shadow .28s ease, background .28s ease, border-color .28s ease !important;\n}\nhtml[data-theme] a.item:hover\
\ {\n background: rgba(255,255,255,.88) !important;\n border-color: rgba(147,197,253,.85) !important;\n transform: translateY(-4px) !important;\n box-shadow:\n 0 18px 36px rgba(30,64,175,.18),\n 0 0 0 1px rgba(147,197,253,.35),\n inset 0 1px 0 rgba(255,255,255,.9) !important;\n}\n/* 外层网格单元保持透明,避免叠两层底 */\nhtml[data-theme] div.item-wrapper {\n background: transparent !important;\n backdrop-filter: none !important;\n -webkit-backdrop-filter: none !important;\n border: none !important;\n box-shadow: none !important;\n}\nhtml[data-theme] a.item .tile-icon,\nhtml[data-theme] a.item .item-icon {\n border-radius: 13px !important;\n filter: drop-shadow(0 3px 6px rgba(15,23,42,.10)) !important;\n transition: transform .28s cubic-bezier(.34,1.2,.64,1) !important;\n}\nhtml[data-theme] a.item:hover .tile-icon { transform: scale(1.08) !important; }\nhtml[data-theme] a.item .tile-title { font-weight: 650 !important; letter-spacing: .1px !important; }\nhtml[data-theme] a.item .description,\n\
html[data-theme] a.item .item-url { color: #64748b !important; }\n\n/* ── 分组容器 ── */\nhtml[data-theme] div.collapsable {\n background: rgba(255,255,255,.40) !important;\n backdrop-filter: blur(20px) saturate(180%) !important;\n -webkit-backdrop-filter: blur(20px) saturate(180%) !important;\n border: 1px solid rgba(255,255,255,.6) !important;\n border-radius: 24px !important;\n box-shadow:\n 0 12px 32px rgba(15,23,42,.09),\n inset 0 1px 0 rgba(255,255,255,.85) !important;\n overflow: hidden !important;\n}\nhtml[data-theme] div.collapsible-content {\n background: transparent !important;\n border-radius: 0 0 22px 22px !important;\n}\nhtml[data-theme] div.collapsable .content-inner { padding: 10px 12px !important; }\nhtml[data-theme] .item-group-container { padding: 0 4px !important; }\n\n/* 分组标题 */\nhtml[data-theme] .collapsable .title,\nhtml[data-theme] .collapsable h1,\nhtml[data-theme] .collapsable h2 {\n font-weight: 700 !important;\n letter-spacing: .2px !important;\n\
}\n\n/* ── 搜索 ── */\nhtml[data-theme] .search-container,\nhtml[data-theme] header input[type=\"text\"] {\n background: rgba(255,255,255,.6) !important;\n border: 1px solid rgba(255,255,255,.7) !important;\n border-radius: 16px !important;\n backdrop-filter: blur(14px) saturate(170%) !important;\n -webkit-backdrop-filter: blur(14px) saturate(170%) !important;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 4px 14px rgba(15,23,42,.05) !important;\n}\n\n/* ── 滚动条 ── */\nhtml[data-theme] ::-webkit-scrollbar { width: 10px; height: 10px; }\nhtml[data-theme] ::-webkit-scrollbar-track { background: transparent; }\nhtml[data-theme] ::-webkit-scrollbar-thumb {\n background: rgba(100,116,139,.32);\n border-radius: 999px;\n border: 2px solid transparent;\n background-clip: content-box;\n}\nhtml[data-theme] ::-webkit-scrollbar-thumb:hover {\n\
\ background: rgba(100,116,139,.5);\n background-clip: content-box;\n}\n\n/* ── 工作空间侧边栏 ──\n 底部「切换视图」按钮组内容 70px 塞进 56px 的栏里,把 side-bar 撑出横向\n 滚动条,必须左右滑动才能看全。这里让它换行并收住溢出。 */\nhtml[data-theme] nav.side-bar { overflow-x: hidden !important; }\nhtml[data-theme] nav.side-bar .switch-view-buttons {\n width: 100% !important;\n display: flex !important;\n flex-wrap: wrap !important;\n justify-content: center !important;\n align-items: center !important;\n gap: 2px !important;\n margin: 8px 0 0 !important;\n}\nhtml[data-theme] nav.side-bar .switch-view-buttons > * {\n flex: 0 0 auto !important;\n min-width: 0 !important;\n max-width: 100% !important;\n}\n\n/* ── 设置抽屉 / 菜单 / 提示 ── */\nhtml[data-theme] .settings-outer,\nhtml[data-theme] .config-container,\nhtml[data-theme] .context-menu,\nhtml[data-theme] .toast,\nhtml[data-theme] .welcome-popup {\n background: rgba(255,255,255,.72) !important;\n backdrop-filter: blur(20px) saturate(180%) !important;\n -webkit-backdrop-filter:\
\ blur(20px) saturate(180%) !important;\n border: 1px solid rgba(255,255,255,.66) !important;\n border-radius: 18px !important;\n box-shadow: 0 14px 34px rgba(15,23,42,.14) !important;\n}\n\n@media (prefers-reduced-motion: reduce) {\n html[data-theme] a.item,\n html[data-theme] a.item .tile-icon { transition: none !important; }\n html[data-theme] a.item:hover { transform: none !important; }\n}\n"
layout: masonry
iconSize: large
language: zh-CN
statusCheck: true
statusCheckInterval: 60
pageInfo:
title: Navigation Portal
description: Self-hosted unified navigation
navLinks: []
footer: ''
sections: []
# 分组由管理后台(/admin/ 的「导航分组」)增删,初始为空:
# 新建一个分组后再往里添加服务即可。
# 「历史访问」分组由 history-server 根据浏览记录自动创建,
# 请不要手工写在这里。