Skip to content

Latest commit

 

History

History
683 lines (474 loc) · 27.7 KB

File metadata and controls

683 lines (474 loc) · 27.7 KB

Bufferly Design Specification

版本:v0.1
日期:2026-06-04
状态:Draft
目标平台:macOS
设计目标:尽可能接近 Apple 原生体验

1. 设计原则

Bufferly 的 UI 不追求炫技,不做网页感、SaaS 感或重型素材库。它应该像一个系统级 macOS 工具:安静、快速、清晰、可键盘驱动,并且在任何工作流里出现和消失都不打扰。

核心原则:

  • 原生优先:使用 SwiftUI / AppKit 原生控件、系统字体、系统颜色和平台交互习惯。
  • 内容优先:剪贴板内容是主角,装饰元素必须克制。
  • 键盘优先:搜索、选择、粘贴、关闭、pin、删除都必须可以用键盘完成。
  • 低打扰:面板呼出后快速完成任务,完成后自动隐藏。
  • 本地可信:隐私和敏感内容状态要清楚,但不要制造焦虑。
  • 高信息密度:像 Raycast 一样快,像 Paste 一样能扫读历史,但面向普通用户,不需要学习就能上手。

2. Apple 原生约束

设计和实现应遵守以下 macOS 习惯:

  • 使用系统字体:.system / SF Pro,不自定义品牌字体。
  • 使用系统颜色:primary, secondary, tertiary, accentColor, windowBackgroundColor, separatorColor 等。
  • 支持 Light / Dark / Auto 外观。
  • 尊重系统 Accent Color,不强行指定高饱和品牌主色。
  • 使用 vibrancy / material 时保持克制,避免模糊过强影响可读性。
  • 窗口、菜单、快捷键、键盘导航遵守 macOS 平台预期。
  • 主流程必须支持 Full Keyboard Access 语义。

3. 视觉方向

关键词:

  • Native
  • Quiet
  • Precise
  • Fast
  • Dense
  • Trustworthy

避免:

  • 大面积渐变背景
  • Web dashboard 风格
  • 过度圆角卡片
  • 明显 Tailwind/Web UI 味道
  • 玻璃拟态过重导致文字不清楚
  • 大标题营销页风格
  • 花哨图标和插画

4. 核心界面

4.1 Quick Panel

Quick Panel 是 Bufferly 的核心界面,按全局快捷键呼出。

方向变更(见 §16-(a)):自 v0.2 起 Quick Panel 由「居中竖向列表」改为 Paste 式底部横向卡片墙。下文已按新方向描述。

建议尺寸:

  • 高度:约 364 pt(固定)。
  • 宽度:按当前屏幕宽度铺开,左右各留 24 pt 边距,最大 1280 pt。
  • 卡片:宽 200 pt、高 272 pt,横向排列。

位置:

  • 贴当前屏幕底部居中,距底部约 24 pt(类似 Paste 的底部条)。
  • 多显示器场景下显示在当前鼠标所在屏幕。

窗口行为:

  • 非文档窗口。
  • 不显示标准标题栏。
  • 失焦后可自动隐藏,设置里允许关闭。
  • Esc 关闭。
  • 回车完成粘贴后自动关闭。

视觉:

  • 背景使用轻量 material 模糊叠加半透明系统底色,不使用大面积 .glassEffect 强模糊。
  • 整体圆角约 20 pt,贴近系统浮层。
  • 卡片为主角:彩色头部 + 白色正文,圆角 14 pt,无投影;不绘制默认选中态,最新信息由卡片顺序表达。
  • 层级由位置、材质和边界表达,不使用投影。

结构:

+--------------------------------------------------------------+
| [search]            [剪贴板 | 已固定]  pinboard tabs     [x]  |
+--------------------------------------------------------------+
|  ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐   →          |
|  │ type   │  │ type   │  │ type   │  │ type   │   横向滚动    |
|  │ time   │  │ time   │  │ time   │  │ time   │              |
|  ├────────┤  ├────────┤  ├────────┤  ├────────┤              |
|  │preview │  │preview │  │preview │  │preview │              |
|  │ source▸│  │ source▸│  │ source▸│  │ source▸│              |
|  └────────┘  └────────┘  └────────┘  └────────┘              |
+--------------------------------------------------------------+

4.2 Search Field

搜索框是默认焦点。

要求:

  • 呼出面板后立即可输入。
  • Placeholder:Search clips
  • 输入时实时过滤结果。
  • 支持 Command + F 聚焦搜索,但默认已聚焦。
  • 支持清空按钮。

视觉:

  • 使用接近 NSSearchField 的样式。
  • 高度 36-40 pt。
  • 左侧搜索图标使用系统符号。
  • 不做夸张边框。

4.3 Clip Card

方向变更(见 §16-(a)):信息单元由「紧凑行」改为 Paste 式卡片。原 §4.3 Clip Row 的「不使用大卡片堆叠」已被本次决定否决。

Clip Card 是卡片墙的信息单元,富预览、可扫读。

尺寸:

  • 宽 200 pt、高 272 pt,固定,避免横向滚动时跳动。

结构:

  • 头部(高约 52 pt):按类型使用纯色背景(见 §9 类型色),显示类型名(白色粗体)+ 相对时间 + 类型图标。
  • 正文(白色):富预览,代码 / JSON / 命令用等宽字体,最多 8 行;底部一行显示来源 App + pin 按钮。

状态:

  • Default:无投影、无选中描边。
  • Hover:只做轻微上移,不整体放大,避免文字被纹理采样后发糊。
  • Pinned:pin 图标点亮为 accentColor。
  • Sensitive blocked:正文用 lock 图标和脱敏文案,不显示明文。

4.4 Type Badge

类型标识要小而清楚,避免彩虹标签。

类型(见 §16-(g):优先展示普通用户能理解的类型):

  • Text
  • URL(链接)
  • Email(邮箱)
  • Image(图片)
  • File(文件)
  • Secret(受保护内容)
  • 规划中:验证码、电话、地址
  • 技术类型(JSON / CMD / Code):现有实现保留,展示优先级降级为高级能力

建议:

  • 使用 Hugeicons stroke-rounded 图标 + 极短文本。
  • Badge 宽度稳定,避免列表抖动。
  • 色彩以系统 secondary/tertiary 为主。
  • 只有 Secret 使用更明确的警示语义,但仍保持克制。

4.5 Pinned Area

Pinned 是主动复用区,不是历史区。

规则:

  • 默认最多展示 3-5 条。
  • 搜索时 pinned 也参与过滤。
  • Pinned 区域为空时不显示大面积 empty state,只显示 Recent。
  • Pin 操作可通过 Command + P 或行内按钮触发。

4.6 Recent Area

Recent 是默认历史流。

规则:

  • 按最近复制时间倒序。
  • 相同内容去重并更新 updatedAt
  • 右侧时间使用短格式:now, 2m, 1h, Yesterday
  • 长文本只显示前两行,详情后续用 Quick Look / Detail Popover。

4.7 Footer

已移除(见 §16-(i)):自 v0.10 起 Quick Panel 不再有 footer,结果数量与按键提示不常驻展示。按键提示由首次引导覆盖层承担,搜索时的匹配数量在搜索框内胶囊显示。

5. 设置页

设置页使用 macOS 原生 Settings 风格。

分组:

  1. 信任与存储

    • 本地存储状态
    • 联网行为状态
    • 历史保留策略
    • 排除 App 数量
  2. 快捷键

    • Show Bufferly
    • Pin selected clip
    • Delete selected clip
    • Paste as plain text
  3. 粘贴行为

    • Return 默认只复制到剪贴板
    • 可选“复制后粘贴到上一应用”
    • 完成后关闭面板
    • 辅助功能权限状态
  4. 隐私

    • Sensitive filtering
    • Store blocked placeholder
    • Excluded apps
    • Link previews opt-in
  5. 历史保留

    • Retention duration
    • Max history count
    • Clear history
    • Local database path
  6. 外观与启动

    • Launch at login
    • Follow system Light / Dark
    • Respect Reduce Transparency / Reduce Motion

视觉:

  • 使用系统表单控件。
  • 主体控件与标签跟随系统默认字号;说明文字使用 footnote 层级,不使用 caption2 做主要信息。
  • 选项型设置优先使用菜单式 Picker,避免长中文挤在 segmented control 里。
  • 使用 sidebar 或 tab settings 取决于实现成本。
  • 不自定义复杂设置组件。

6. 交互规则

6.1 快捷键

默认建议:

  • 呼出 / 隐藏:Option + Space

备选:

  • Control + Space 可能与输入法冲突,不建议默认。
  • Command + Shift + V 常被“粘贴为纯文本”占用,不建议默认。

6.2 键盘操作

主面板:

  • Esc:关闭。
  • Arrow Left / Right:在卡片墙左右移动选中项(Up / Down 作为等效别名,见 §16-(a))。
  • Enter:按设置执行:默认只复制到剪贴板;启用后复制并粘贴到上一应用。
  • Option + Enter:只复制到剪贴板,不粘贴到上一应用。
  • Command + Enter:粘贴为纯文本。
  • Command + P:Pin / Unpin。
  • Command + Delete:删除。
  • Command + 1 / 2:切换 剪贴板 / 已固定 分区。
  • Command + ,:打开设置。

6.3 鼠标操作

  • 单击选中。
  • 双击粘贴。
  • Hover 时显示行内操作。
  • 右键显示上下文菜单。

上下文菜单:

  • Paste
  • Copy
  • Paste as Plain Text
  • Pin / Unpin
  • Delete

7. 内容预览规则

定位说明(见 §16-(g)):Bufferly 面向普通用户,预览与类型展示优先照顾链接、图片、文件、验证码等日常内容。JSON / Command / Code 等技术类型的识别与渲染是现有实现,保留但不作为主线展示重点。

7.1 Plain Text

  • 保留原文本换行,但预览最多两行。
  • 连续空白折叠为单个空格。

7.2 URL

  • 主预览显示 domain + path。
  • 次要信息显示完整 URL 或标题,后续可抓取。
  • 不提供 URL 清理等转换动作,避免把产品变成开发者转换工具。

7.3 JSON

  • 合法 JSON 显示 {} icon。
  • 预览显示第一层 key 或压缩后的前缀。
  • 不提供 JSON 格式化 / 压缩等转换动作,保留为历史检索与粘贴工具。

7.4 Command

  • 常见命令如 git, npm, pnpm, cargo, swift, xcodebuild, curl 标记为 CMD。
  • 保留 monospace 预览。

7.5 Code

  • 多行、含明显语法符号或代码关键字时标记为 Code。
  • 不在 MVP 做完整语法高亮,避免性能和复杂度过早上升。

7.6 Sensitive

  • 命中敏感规则时不显示原文。
  • 预览文案:Sensitive content hidden
  • 显示 lock icon。
  • 默认不保存明文。

8. 动效

动效必须短、轻、系统感。

  • 面板出现:80-120ms opacity + scale 0.98 -> 1。
  • 面板关闭:60-90ms opacity。
  • 卡片 hover:~120ms ease-out 的轻微上移,不整体放大。
  • 卡片按下:100-140ms 的 0.98 scale 反馈。
  • 键盘定位卡片滚入视野:~160ms ease-out,不绘制可见选中态。
  • 删除:轻微 fade/collapse,避免夸张动画。
  • 搜索结果变化:优先即时更新,不做复杂过渡。

禁止:

  • 弹性过强的 spring。
  • 长时间模糊动画。
  • 大面积渐变动效。
  • 卡片飞入飞出式的入场动画。

9. 颜色与材质

不要定义一套重品牌色。Bufferly 应跟随系统。

建议:

  • Background:system window background / material。
  • Text primary:system primary label。
  • Text secondary:secondary label。
  • Separator:system separator。
  • Keyboard target:仅滚入视野,不使用卡片描边或投影表达。
  • Warning / Secret:system red or orange,仅用于状态点和 icon。

类型色(卡片头部,见 §16-(a)):

  • 仅用于卡片彩色头部,正文与列表其余部分仍跟随系统语义色,不扩散成全局品牌色;头部使用纯色,不叠加渐变或高光。
  • Text:#0088FF / URL:#34C758 / JSON:#CB30E0 / Command:石墨灰 / Code:#CB30E0 / Email:pink / Image:#FF383C / Secret:orange。
  • 色彩只负责类型识别,不承载选中态或主要层级。

Dark Mode:

  • 不手写独立暗色 palette。
  • 使用系统语义色。
  • 验证 selected row、Secret row 在深色下的对比。

10. 图标

全部图标统一使用 Hugeicons(stroke-rounded,免费 MIT 集),见 §16-(j);SF Symbols 仅作为资源缺失时的运行时回退。App 图标与菜单栏图标同样取自 Hugeicons glyph,保证整体图标语言一致。

映射(Hugeicons 名称):

  • 系统操作:Search search-01、清除 cancel-circle、Pin pin、移除 minus-sign-circle、空态/引导 copy-01 / ai-content-generator-01
  • 状态:成功 checkmark-circle-02、警告 alert-02、信息 information-circle
  • 内容类型:Text text-align-left、URL link-01、JSON third-bracket、Command command-line、Code code、Email mail-01、Image image-02、File file-empty-02、Rich Text file-02、Secret square-lock-01、验证码 lock-password、电话 call-02、地址 location-01、账号 user-account

图标规则:

  • 不手绘临时 SVG;图标从 @hugeicons/core-free-icons 的数据生成 SVG,随包离线分发(Resources/Hugeicons/)。
  • 不使用彩色插画图标。
  • 工具按钮必须有 accessibility label。

11. 空状态与错误状态

11.1 首次打开

首次启动若尚未完成引导,可以自动显示 Quick Panel 并覆盖一次性引导。引导完成后,后续启动 / 登录只常驻菜单栏,不主动弹出主面板。

空状态要克制:

No clips yet
Copied text will appear here.

不要放大插画,不放营销文案。

11.2 无搜索结果

No matching clips

11.3 权限缺失

如果“复制后粘贴到上一应用”需要 Accessibility 权限:

  • 用系统风格提示。
  • 清楚说明只需要权限来把选中内容粘贴回前台 App。
  • 提供打开 System Settings 的按钮。
  • 没权限时仍允许“复制到剪贴板”。

12. Accessibility

必须支持:

  • VoiceOver 可读行内容、类型、pin 状态、敏感状态。
  • 所有按钮有 label。
  • 主要流程可纯键盘完成。
  • 选中状态不仅靠颜色表达。
  • 遵守 Reduce Motion。
  • 遵守 Increase Contrast。

13. Implementation Notes

建议 SwiftUI 组件边界:

BufferlyApp
AppDelegate
QuickPanelWindowController
ClipboardMonitor
ClipStore
ClipClassifier
SensitiveContentFilter
GlobalShortcutManager
QuickPanelView
SearchFieldView
ClipRowView
PinnedSectionView
RecentSectionView
SettingsView

优先实现静态 UI,再接真实数据:

  1. QuickPanelView with mock clips。
  2. ClipRow states。
  3. Search filtering。
  4. Pin / delete mock actions。
  5. ClipboardMonitor。
  6. Persistence。
  7. Global shortcut。

14. Design Acceptance Checklist

MVP UI 验收:

  • 看起来像 macOS 原生工具,而不是网页套壳。
  • 呼出面板后搜索框立即聚焦。
  • 500 条历史仍能快速搜索和滚动。
  • 只用键盘能完成找回并粘贴。
  • Light / Dark 都可读。
  • 长文本不会撑乱布局。
  • Secret 内容不会泄露明文。
  • 设置页能明确说明本地存储、不上传、保留多久、哪些 App 不记录。
  • 设置页符合 macOS 设置习惯。
  • 没有大面积渐变、营销式 hero、装饰性插画。

15. References

16. 修订日志

(a) v0.2:Quick Panel 从 Raycast 式竖向列表转向 Paste 式横向卡片墙

日期:2026-06-05
决策人:项目所有者(明确选择「真正向 Paste 看齐」)。

改了什么

  • 面板从「屏幕居中浮层 + 竖向紧凑行列表」改为「屏幕底部横向卡片墙」。
  • 信息单元从 Clip Row(紧凑行)改为 Clip Card(彩色头部 + 白色正文)。
  • 键盘导航主方向从上下改为左右。
  • 顶部新增 Pinboard 分段标签(剪贴板 / 已固定)。
  • 新增按类型的卡片头部色(§9 类型色)。

为什么改

  • 原 v0.1 只取了 Paste 的「可视化历史」概念,刻意用 Raycast 式竖向列表实现,并主动驳回了 Paste 的卡片形态。
  • 实际使用后,项目所有者希望直接对齐 Paste 的具体样式(富预览、可横向扫读、来源与类型一眼可辨),认为卡片墙比紧凑行更符合产品期望。这是基于真实使用偏好的方向调整,优先级高于 v0.1 当初的取舍。

因此被否决/取代的原 v0.1 条款

  • §4.1「屏幕水平居中」「略高于中心,类似 Spotlight / Raycast」「内部不要再嵌套大卡片」——改为底部卡片墙。
  • §4.3「不使用大卡片堆叠」——改为正式采用卡片。
  • §3 避免清单「过度圆角卡片」——卡片为主角,14 pt 圆角属正常范围;仍避免「过度」与 Web 卡片味。
  • §8「卡片飞入飞出」——仅保留禁止「入场动画式」的飞入飞出。
  • §6.2 上下导航——主方向改为左右。

仍然保留的原则(未被本次推翻)

  • 原生优先、键盘优先、低打扰、本地可信、高信息密度。
  • 跟随系统语义色:类型色只用于卡片头部,不扩散成全局品牌色;正文仍用系统色。
  • 不自定义品牌字体、支持 Light / Dark、尊重 Reduce Motion / Increase Contrast。
  • 不做营销 hero、不做 Web dashboard 味、玻璃拟态不过重影响可读性。

(b) v0.3:全面对齐 macOS 26(Tahoe)Liquid Glass 范式

日期:2026-06-05 决策人:项目所有者(「完全按照 Apple 范式来」「全部都 Apple」)。

改了什么

  • 部署目标提到 macOS 26,作为完整的 macOS 26 app(Package.swift + 打包 LSMinimumSystemVersion)。
  • 顶部控件接入官方 Liquid Glass:搜索框用 .glassEffect(in: Capsule());分段控件保留原生胶囊形态,选中 pill 使用实底系统色和极轻小投影,不画描边。
  • 面板底层曾使用官方 .glassEffect(.regular, in:) 形成 Liquid Glass 背板;v0.7 起主面板改为轻量 material 模糊叠加半透明系统底色,内容卡片保持实底,不把正文区域玻璃化。
  • 顶部控件改用 SF Symbols + 原生组件,去掉自绘 PNG 图标封装(删除 RemixIcon / NativeSearchField 等)。
  • 搜索框定为常驻玻璃药丸(曾尝试「默认收起、点击展开」,因收起态不好看回退;见对话)。
  • 去掉右上角关闭按钮:呼出式浮层靠 Esc / 点外部 / 再按快捷键关闭,不放关闭按钮(Spotlight / Raycast 范式)。
  • 去掉顶栏下的硬 Divider:Tahoe 浮动工具栏让内容从下方透出,不用硬分割线。
  • 顶部控件内边距与卡片墙对齐为 20pt,符合同心圆 外圆34 = 内圆 + 边距,分段控件不再顶到 34pt 外圆弧;搜索药丸与分段控件用 .controlSize(.large) 配齐高度读成一排。
  • 卡片选中描边 3pt → 2pt,更贴近 Apple 选中惯例;后续已被 v0.4 的「无可见选中态」取代。
  • 状态 Toast 使用官方 Liquid Glass 小浮层,不画描边;语义色只放在图标上,避免打扰复制流程。
  • Quick Look 预览使用官方 Liquid Glass 外壳,正文内容区保持实底,避免长文本和代码被玻璃材质干扰。
  • 开启「降低透明度」时,Liquid Glass 表面回退为实底系统色,避免可读性依赖透明材质。

为什么改

  • 项目所有者要求「完全按照 Apple 范式」,且开发机已是 macOS 26(SDK / 部署目标可用真正的 Liquid Glass)。
  • 对照官方 Liquid Glass 文档审查:主面板背板和顶部控件使用官方 Liquid Glass,内容卡片保持实底;本次主要修掉「不够 Tahoe」的细节(硬分割线、控件尺寸/对齐、字号过大、冗余关闭按钮)。

仍然保留的原则(未被本次推翻)

  • (a) 的 Paste 式彩色卡片墙不变:彩色头部仅用于内容卡片,不是玻璃,不与「玻璃只给控件层」冲突。
  • 原生优先、键盘优先、低打扰、尊重 Reduce Motion / Increase Contrast;系统组件自动适配「降低透明度」。

参考:Apple「Liquid Glass」技术总览 https://developer.apple.com/documentation/TechnologyOverviews/liquid-glass

(c) v0.4:去掉可见选中态与投影

日期:2026-06-29 决策人:项目所有者。

改了什么

  • 主面板卡片不再显示选中态:最新内容由最前位置表达,键盘导航只保持内部目标和滚动位置。
  • 去掉卡片与浮层投影,层级由材质、边界、位置和内容密度表达。
  • 保留彩色头部用于类型识别,同时去掉默认选中态和投影来降低解释成本。
  • 设置页隐私摘要改为实时状态:本地历史、敏感过滤、链接预览是否联网一眼可见。

为什么改

  • 用户实际使用中认为“默认选中的卡”会制造不必要的解释成本;放在最前面已经代表最新信息。
  • 投影和默认选中态会增加解释成本;hover 放大曾导致文字发糊,高频工具应优先稳定、清楚、快速。

(d) v0.5:信任中心、隐私读取与卡头对比

日期:2026-07-01 决策人:项目所有者。

改了什么

  • 设置页信息架构改为信任与存储、快捷键、粘贴行为、隐私、历史保留、外观与启动。
  • 设置页必须明确展示:本地存储、不上传、保留多久、哪些 App 不记录。
  • 用户可设置历史保留时长;未固定内容按时间过期,已固定内容不按时间自动删除。
  • 默认排除 Passwords、Keychain Access、1Password、Bitwarden 等敏感来源,并提供恢复建议列表。
  • 剪贴板监听先检查 pasteboard 类型 / 元数据 / transient 或 concealed 标记,再读取真实内容。
  • 卡片彩色头部继续保留上一版系统纯色,不再额外压暗;类型色只负责扫读,不承载可读长文本。

为什么改

  • 剪贴板工具的核心信任来自“我知道它记录什么、保存多久、哪些地方不会记录”。
  • macOS 新 pasteboard 隐私机制鼓励先检测模式和元数据,减少不必要的内容读取与系统提醒。

(e) v0.6:复制卡片参考 Paste 预览层级

日期:2026-07-04 决策人:项目所有者。

改了什么

  • 类型色调整为:Text #0088FF、URL #34C758、Image #FF383C、Code #CB30E0;JSON 同 Code 使用 #CB30E0,Command / Email / Secret 保持原有区分。
  • 所有文本型内容统一使用正文预览和底部淡出,减少每种文字内容一套版式带来的扫读成本。
  • 图片卡从完整 letterbox 预览改为正文区域 full-bleed 填充预览,并在底部叠加低位渐隐和来源。

仍然保留的原则

  • 卡片宽高、头部高度和头部右侧类型图标尺寸不变。
  • 不恢复卡片默认选中态,不给真实产品卡片加大投影;层级仍主要由面板材质、卡片边界和内容预览表达。
  • 渐隐只在底部低位收尾,不能过早遮住正文或图片主体。

(f) v0.7:主面板背板透明度校准

日期:2026-07-05 决策人:项目所有者。

改了什么

  • 主面板背板使用 .ultraThinMaterial 提供轻量模糊,并叠加半透明系统底色,当前透明度为 0.64,避免读成全透明。
  • 大面积背板不叠加 .glassEffect;顶部控件等小面积交互控件仍可使用系统玻璃效果。

(g) v0.8:产品定位转向普通 macOS 用户

日期:2026-07-07 决策人:项目所有者。

改了什么

  • 产品定位从「开发者和 AI heavy user 的剪贴板工作台」调整为「普通 macOS 用户的本地优先剪贴板助手」。
  • 类型展示优先级向普通用户倾斜:链接、邮箱、图片、文件、受保护内容优先;验证码、电话、地址列入规划。
  • JSON / Command / Code 等技术类型的识别、类型色与等宽预览属于现有实现,全部保留,但降级为高级能力,不作为主线展示与宣传重点。
  • 敏感内容对用户的措辞从「过滤」转向「保护」,强调默认本地保存、不上传、自动保护。

为什么改

  • 「验证码被顶掉、链接图片文件找不回」是普通用户的高频痛点,市场空间比开发者细分更大。
  • 开发者 / AI 工作流能力(MCP、AI 上下文打包等)保留为未来高级功能,不与主线体验冲突。

仍然保留的原则(未被本次推翻)

  • 原生优先、键盘优先、低打扰、本地可信、高信息密度。
  • 底部横向卡片墙、类型色头部、无可见选中态等既有设计决定不变。

(h) v0.9:Quick Panel 动效与手感统一

日期:2026-07-07 决策人:项目所有者。

改了什么

  • 动效参数收敛为统一 token(Motion):按下 130ms / hover 120ms / 键盘滚动 160ms / 覆盖层 120ms / toast 160ms / 列表增删 180ms,全部 ease-out,替换散落的 snappy 与自定义曲线。
  • 键盘导航滚动补上 160ms ease-out 动画(§8 原要求),且只在目标卡不完全可见时滚到最近一侧边缘,不再每按一次就整排居中。
  • 键盘落到目标卡时播一次 ~150ms 的瞬时上移脉冲(与 hover 同量级,动完无痕),解决卡片不足一屏时方向键零反馈;不引入持久选中态,v0.4 决定不变。
  • 卡片按下反馈改为真实按下状态(mouse-down 即 0.98,松手回弹),替换点击完成后补播的脉冲。
  • 删除 / 取消固定的卡片退场加轻微 fade + 0.98 缩小(§8 删除动效);入场保持直入,不做飞入。
  • 空格 Quick Look 预览与首次引导覆盖层加 120ms 出入场:scrim 淡入,浮层本体 0.98 → 1。
  • 卡片墙支持滚轮 / 触控板「纵向为主」的滚动映射为横向(Paste 惯例);横向手势保持原生行为,预览 / 引导覆盖层期间不接管。
  • 面板呼出、搜索变化、新条目等程序性定位不播滚动动画,直接就位;所有新增动效尊重 Reduce Motion(含补上 pin 图标 bounce 的门控)。

(i) v0.10:移除 Quick Panel footer

日期:2026-07-22 决策人:项目所有者(明确指出「这俩不要」:左下结果数量与右下快捷键提示)。

改了什么

  • 移除面板底部常驻辅助条(原 §4.7 footer):左下「N 条」结果计数与右下「← → 选择 · 回车… · 空格预览 · ⌘P 固定」按键提示整条去掉。
  • 面板高度 392 pt → 364 pt,卡片墙底部 20 pt 内边距成为面板底边,其余布局不变。

为什么改

  • 常驻计数与按键提示对高频使用是噪音;按键提示已有首次引导覆盖层与设置页速查承担,搜索时的匹配数量仍在搜索框内胶囊显示。

仍然保留的原则(未被本次推翻)

  • 键盘优先、低打扰:快捷键本身全部保留,只是不再常驻展示提示。
  • 四周统一 20 pt 边距与同心圆角(外 34 = 卡片 14 + 边距 20)不变。

(j) v0.11:图标库统一换成 Hugeicons

日期:2026-07-22 决策人:项目所有者(「所有的 icon 都换成 Hugeicons 库里的 icon」)。

改了什么

  • 内容类型图标从 Tabler Icons 换为 Hugeicons stroke-rounded(免费 MIT 集,@hugeicons/core-free-icons 生成 SVG 离线分发),删除 TablerIcons 资源与 TablerIconView
  • 界面内原 SF Symbols 图标(搜索、清除、pin、空态、引导、状态 toast、设置移除按钮、卡片内 email/link/lock/photo/花括号等)全部换为 Hugeicons,SF Symbols 降级为资源缺失时的运行时回退。
  • pin 图标的 SF Symbol bounce 动效改为等价的 130ms 缩放脉冲(PinButton),仍尊重 Reduce Motion。
  • App 图标与菜单栏图标此前已换为 Hugeicons glyph(ai-content-generator-01 solid 变体),本次让面板内图标与其保持同一图标语言。

为什么改

  • 项目所有者希望全 App 图标风格统一到 Hugeicons;此前 Tabler(内容类型)+ SF Symbols(操作)+ Hugeicons(App 图标)三套混用。

因此被调整的原有条款

  • §10「系统操作优先使用 SF Symbols」→ 全部图标统一 Hugeicons,SF Symbols 仅作回退。
  • v0.3 中「顶部控件改用 SF Symbols」的图标部分由本条取代;原生控件、语义色等其余原则不变。