Skip to content

Issue 86

clean edited this page Sep 22, 2026 · 1 revision

月光主题与交互动效

实现:PR #89(草稿) · 代码提交 0efe680

关联:Issue #86 · Parent #82 · 验收记录

状态:已在独立工作分支实现,待审阅、合并与跨平台真机验收;不宣称已发布。实现以 Issue 评论的 设计规范 v2 为准。

范围

保持现有 DOM 区域、字号、字体、间距、圆角、面板尺寸、拖拽、折叠、快捷键、窄屏行为和操作顺序。保留 Alune 头像;连接表单仍是弹窗。画板只确认主题方向,不重排工具栏、导航或右侧未暂存/已暂存/提交表单。

颜色与组件

apps/web/src/theme.css 是颜色源:浅色主底 #F5F7FB、主色 #415AB0;深色主底 #151E30、主色 #AFC6FF。Ant Design 的 ConfigProvider 读取同一套已解析 CSS 变量,弹层、菜单、原通知通道和原生表单一并换肤。静态消息 API 改为 App 上下文 API,使结果通知随当前主题更新。

连接成功、警告、失败独立于主色。统一/分栏 Diff 使用规定的新增、删除、hunk 底色;行号、文字状态和 A/M/D/R/U 保持,分栏增加 +/- 标记。历史图各分支使用随主题变化的图线色。

沿用旧变量名以减少组件迁移风险;提取 7px 控件圆角、8px 面板圆角、8px 控件间隔 token,数值保持不变。边界线与输入控件线分开:输入控件浅色线调整为 #77859C,在主底/面板/侧栏上达到 3:1。

偏好与启动

原设置中心的“应用”分类增加“外观”,支持 system/light/dark 与减少动态效果。新装默认跟随系统;显式主题覆盖系统主题,减少动态效果则与系统偏好取逻辑或。

偏好作为 appearance 字段合并进现有 workspace v1 数据。缺失/非法值回退默认,不迁移或清空既有布局、排序、连接、AI 设置和提交草稿;恢复布局不会重置外观。桌面通过现有可信 IPC 存储于稳定的 workspace.json,避免随机 HTTP 端口导致偏好丢失。存储错误沿用通知与设置页提示。

浏览器由同源启动脚本在 CSS 绘制前读取已保存主题。桌面创建窗口时读取稳定偏好设置原生背景;React 挂载前完成异步偏好读取并应用主题。存储不可用时采用系统默认并保留原错误反馈。

动效与真实状态

  • 颜色/边线 hover:100ms;标签/文件选择及新挂载 Diff 内容:160ms;消息出现:120ms;面板上限 token:220ms;等待图标:1600ms。
  • 进入缓动 cubic-bezier(.2,0,0,1),退出 cubic-bezier(.4,0,1,1)。去掉原卡片/按钮 hover 位移,不动画化面板拖拽宽度或 Diff 行高。
  • 系统或应用减少动效时,禁用 Ant Design motion;CSS 过渡即时,循环最多一次且缩到不可感知时长,以保留库的结束事件。
  • 连接、暂存、提交、同步结果继续来自原后端请求。等待文本始终保留,同步超过 30 秒在原状态栏显示“仍在运行”;不伪造进度,也不新增不存在的日志或取消能力。

验收边界

本次 macOS arm64 的浏览器、Electron、自动测试和原布局对照见验收记录。Windows/Linux 真机、真实 OS 动效设置、200% 系统缩放与大 Diff 性能仍待专门验收,Issue 不因本次实现提前关闭。

Clone this wiki locally