Files
ele-HeiXiu/CHANGELOG.md
YoungestSongMo eb12248a62 feat: 主题切换性能优化 — View Transitions API + 0.15s 统一过渡 + 设置页增强
【问题】
  桌面端(Electron)切换主题时颜色变化速度不一致、明显卡顿。
  根因分析(4 轮迭代):
    1. 过渡时长不统一(body 0.3s / 组件 0.15s)→ 统一到 0.2s
    2. antd CSS-in-JS 标签替换导致瞬间变色 → 尝试 cssVar(无效,仍走标签替换)
    3. applyHtmlTheme 在 updater 回调中执行,与 antd CSS 变更不同帧 → 移入 useLayoutEffect
    4. html * 全局过渡在 Electron 中为数千 DOM 节点同步插值 → 合成器掉帧
  终极方案:View Transitions API(GPU 合成器 1 次 cross-fade 替代 N 个 CSS 过渡)
   + 精准 CSS 过渡覆盖 ~80 个 antd 容器类(回退方案)

  【修改】

  ThemeProvider.tsx — 核心重构
    - applyHtmlTheme 从 setIsDark updater → useLayoutEffect([isDark])
      确保自定义 CSS 变量与 antd CSS-in-JS 在同一次 React 提交中生效
    - View Transitions API:document.startViewTransition + flushSync
      GPU 合成器截取旧/新两帧做单次 cross-fade,消除多元素插值卡顿
    - 浏览器不支持时自动回退到 CSS transition 方案

  globals.css — 过渡策略
    - body: 0.3s ease → 0.15s linear
    - View Transitions 动画:::view-transition-old/new(root) 0.15s linear
    - ~80 个 antd 容器类精准过渡(Layout/Card/Modal/Table/Input/
      Select/Picker/Menu/Tabs/Tag/Alert/Empty/Result/Skeleton 等)
      按功能分组:布局 → 表格 → 表单 → 导航 → 反馈
      不覆盖交互组件自有 transition(Button/Switch/Slider 等)
      linear 替代 ease — 匀速插值,桌面应用更利落

  Layout.tsx / HomeContent.tsx / LeftPanel.tsx / ModelSelector.tsx
    - 过渡参数对齐:全部 0.2s → 0.15s linear

  SettingsPage.tsx — 用户体验
    - Modal 取消 keyboard={false},Esc 键可关闭
    - macOS:关闭按钮移至标题左侧(遵循 macOS HIG)
    - afterClose 中 blur 当前焦点元素,防止聚焦跳到导航栏

  【文档】
  CHANGELOG.md — 新增 0.0.15 版本记录
  CLAUDE.md — 新增主题系统架构章节(双轨颜色体系 / 时序 / 过渡策略)
2026-06-09 11:02:40 +08:00

2.5 KiB
Raw Blame History

更新日志

每次发版前修改此文件,npm run build:win 打包后会自动读取生成 update-info.json。


0.0.152026-06-09

主题切换性能优化 — 桌面端流畅度提升

  • View Transitions API 驱动主题切换GPU 合成器单次 cross-fade 替代 80+ 个独立 CSS 过渡,消除 Electron 卡顿
  • 主题更新时序统一:applyHtmlTheme 从 updater → useLayoutEffectCSS 变量与 React 提交同帧
  • 过渡参数对齐:全部 0.2s ease0.15s linear,桌面应用更利落
  • CSS 过渡精准覆盖antd 容器组件Layout/Card/Modal/Table/Input/Menu 等 ~80 个类)替代 html * 全局选择器
  • 设置页 Esc 键关闭 + macOS 关闭按钮适配 + 关闭后焦点防跳转

0.0.14 -- 🚀更新公告

模型选择器焕新

  • 模型列表改为标签页分组展示新增「全部模型」Tab
  • 列表项新增悬停高亮效果,维护中模型自动置灰并提示
  • 修复选择模型后参数表单重复 key 报错
  • 类型体系重构,支持后端分类 slug 自动映射

0.0.132026-06-07

  • 修复主题切换后首页状态重置问题:设置页去路由化,改为事件总线驱动的 Modal 叠加
  • 首页三栏分隔条视觉对齐:移除右侧多余 margin左右完全对称
  • 轮播图新增关闭按钮session 级别隐藏,每次启动重新展示
  • 确立 QT 多窗口模型 → Web 架构映射原则:叠加层走 Modal/Drawer + 事件总线,不走路由
  • 修复首页三栏布局溢出:拖拽分隔条增加最大宽度约束 + 视口缩小时自动收窄面板,防止右侧面板被挤出视口

0.0.122026-06-04

  • 重构更新检查流程无更新不再抛异常PreCheck → 直接 IPC 通知
  • 新增用户决定下载流程:检查到新版本后展示更新内容,用户确认后再下载
  • 设置页新增"查看详情"弹窗Markdown 格式化展示更新日志
  • 新增"下载更新"按钮,与"安装更新"分离为两个独立操作
  • 修复测试服务器版本排序(字符串序 → 语义版本序0.0.10 正确排在 0.0.9 之后)
  • electron-updater Provider 增加 TTL 缓存,避免重复 API 请求
  • 修复 Windows cmd set 命令空格导致的 Invalid URL 问题
  • 修复 electron-updater 'error' 事件拦截,无更新不再爆红

格式说明

每个版本以 ## x.y.z日期 开头,内容为无序列表。打包脚本会提取最新版本的日志填入 update-info.json。