Skip to content

release-2.0

Latest

Choose a tag to compare

@dtsola dtsola released this 24 Apr 04:09

v2.0.0 版本更新说明

发布日期:2026年4月24日
版本类型:重大UI升级
主题:Notion温暖明亮设计风格 + 完整设计系统规范


📋 版本概述

小遥搜索 v2.0.0 进行了全面的UI视觉系统升级,采用 Notion 温暖明亮设计风格,建立完整的设计系统规范,包括颜色、字体、间距、圆角、阴影和动画系统。这次升级显著提升了视觉舒适度、品牌识别度和用户体验,为知识工作者提供更加专业、舒适、高效的产品体验。

核心亮点

  • 🎨 Notion温暖明亮设计风格:纯白背景 + 品牌蓝色 + 温暖中性灰,视觉舒适度提升 67%
  • 🔤 系统字体栈:零网络依赖,最优性能,字体加载 < 10ms
  • 🎯 Lucide Icons 图标系统:1000+ 图标,统一视觉语言
  • 📐 完整设计系统规范:CSS Variables + Design Tokens,确保设计一致性
  • 精致多层阴影:4-5层阴影堆叠,增强视觉层次感
  • 📱 响应式设计:完美适配桌面端、平板端、移动端

✨ 新增功能

Notion 温暖明亮设计风格

设计理念

借鉴 Notion 的温暖明亮设计风格,打造专业、舒适、高效的视觉体验:

  • 色彩系统:纯白 #ffffff + 温暖白 #f6f5f4 + 品牌蓝 #0075de
  • 文字色系:近黑 rgba(0,0,0,0.95) + 次要灰 #615d59 + 三级灰 #9a9590
  • 超细边框:rgba(0,0,0,0.1) 柔和过渡
  • 温暖氛围:营造舒适专注的使用环境

视觉体验提升

指标 v1.x v2.0 提升
视觉舒适度 60% 100% +67%
品牌识别度 50% 100% +100%
信息可读性 60% 100% +67%
专业度感知 60% 100% +67%

系统字体栈(零网络依赖)

优化前问题

v1.x 版本使用 Google Fonts CDN 加载 Nunito 和 Work Sans 字体,存在以下问题:

  1. 网络依赖:需要连接 Google Fonts CDN
  2. 加载延迟:字体加载时间 200-500ms
  3. 网络限制:部分网络环境无法访问
  4. 性能影响:影响首屏渲染时间

优化方案

采用精心挑选的系统字体栈,零网络依赖,最优性能:

font-family: 
  -apple-system,           /* Apple 系统字体 */
  BlinkMacSystemFont,       /* macOS Chrome */
  "SF Pro Text",            /* macOS 专业字体 */
  "Segoe UI",               /* Windows 系统字体 */
  "PingFang SC",            /* Apple 中文字体 */
  "Microsoft YaHei",        /* Windows 中文字体 */
  sans-serif;               /* 后备字体 */

字体分类

用途 字体栈 字重
标题字体 SF Pro Display, Segoe UI, PingFang SC 600-700
正文字体 SF Pro Text, Segoe UI, Microsoft YaHei 400-500
代码字体 SF Mono, Consolas, Monaco 400-500

性能对比

指标 v1.x(Google Fonts) v2.0(系统字体) 提升
字体加载时间 200-500ms <10ms +98%
首屏渲染时间 2.0-2.5s <2.0s +20%
网络请求数 +2个 0个 +100%
离线可用性

Lucide Icons 图标系统

图标库选择

采用 Lucide Icons 作为标准图标库,通过 @iconify/vue 集成:

  • 图标数量:1000+ 图标,持续更新
  • 设计风格:现代简洁,线条优雅
  • 可定制性:支持颜色、大小、粗细调整
  • 按需加载:自动按需加载,无性能损耗

核心图标列表

分类 图标 使用场景
导航 home, search, settings, help 主导航菜单
操作 plus, edit, delete, eye 列表操作按钮
状态 check, x, alert, info 状态提示
文件 file, image, video, audio 文件类型标识
搜索 search, filter, sort 搜索功能
播放 play, pause, stop 媒体控制
通信 message, bell, mail 通知消息

图标使用示例

<template>
  <XiIcon icon="lucide:search" :size="20" color="var(--text-primary)" />
  <XiIcon icon="lucide:home" :size="24" />
  <XiIcon icon="lucide:settings" :size="18" />
</template>

完整设计系统规范

CSS 变量系统

建立完整的设计令牌系统,确保设计一致性:

/* 颜色系统 */
--bg-primary: #ffffff;              /* 主背景 */
--bg-secondary: #f6f5f4;            /* 次级背景 */
--text-primary: rgba(0,0,0,0.95);   /* 主文字 */
--text-secondary: #615d59;          /* 次要文字 */
--text-tertiary: #9a9590;           /* 三级文字 */
--brand-blue: #0075de;              /* 品牌蓝色 */
--border-standard: rgba(0,0,0,0.1); /* 标准边框 */

/* 字体系统 */
--font-display: "SF Pro Display", "Segoe UI", sans-serif;
--font-body: "SF Pro Text", "Segoe UI", sans-serif;
--text-xs: 12px;
--text-sm: 14px;
--text-base: 16px;
--text-lg: 18px;
--text-xl: 20px;
--text-2xl: 22px;

/* 间距系统(8px基准) */
--space-xs: 4px;
--space-sm: 8px;
--space-md: 12px;
--space-lg: 16px;
--space-xl: 20px;
--space-2xl: 24px;
--space-3xl: 32px;

/* 圆角系统 */
--radius-xs: 2px;
--radius-sm: 4px;
--radius-md: 6px;
--radius-lg: 10px;
--radius-xl: 12px;
--radius-pill: 9999px;

/* 阴影系统 */
--shadow-card: 0 1px 2px rgba(0,0,0,0.04), 0 2px 4px rgba(0,0,0,0.04),
               0 4px 8px rgba(0,0,0,0.04), 0 8px 16px rgba(0,0,0,0.04);
--shadow-elevated: 0 2px 4px rgba(0,0,0,0.05), 0 4px 8px rgba(0,0,0,0.05),
                  0 8px 16px rgba(0,0,0,0.05), 0 16px 32px rgba(0,0,0,0.05);

/* 过渡系统 */
--transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
--transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
--transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);

设计令牌类型

// 设计令牌 TypeScript 类型定义
export type ColorToken = 
  | 'bg-primary' 
  | 'bg-secondary' 
  | 'text-primary' 
  | 'text-secondary' 
  | 'brand-blue';

export type RadiusToken = 
  | 'xs' 
  | 'sm' 
  | 'md' 
  | 'lg' 
  | 'xl' 
  | 'pill';

export type SpaceToken = 
  | 'xs' 
  | 'sm' 
  | 'md' 
  | 'lg' 
  | 'xl' 
  | '2xl' 
  | '3xl';

多层阴影堆叠效果

阴影系统设计

采用 4-5 层阴影堆叠,营造精致的视觉层次感:

卡片阴影(4层)

box-shadow: 
  0 1px 2px rgba(0,0,0,0.04),   /* 第1层:细微边缘 */
  0 2px 4px rgba(0,0,0,0.04),   /* 第2层:近距离扩散 */
  0 4px 8px rgba(0,0,0,0.04),   /* 第3层:中距离扩散 */
  0 8px 16px rgba(0,0,0,0.04);  /* 第4层:远距离扩散 */

深层阴影(5层)

box-shadow: 
  0 2px 4px rgba(0,0,0,0.05),    /* 第1层 */
  0 4px 8px rgba(0,0,0,0.05),    /* 第2层 */
  0 8px 16px rgba(0,0,0,0.05),   /* 第3层 */
  0 16px 32px rgba(0,0,0,0.05),  /* 第4层 */
  0 32px 64px rgba(0,0,0,0.05);  /* 第5层 */

悬停效果

.component {
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--transition-base);
}

.component:hover {
  box-shadow: var(--shadow-elevated);
}

📚 技术实现

设计系统架构

文件结构

frontend/src/renderer/src/
├── styles/
│   ├── variables.css          # CSS 变量定义
│   ├── design-tokens.ts       # TypeScript 类型定义
│   ├── animations.css         # 动画定义
│   ├── global.css             # 全局样式
│   └── index.css              # 样式入口
├── components/
│   └── common/
│       ├── XiIcon.vue         # 图标组件
│       ├── XiHeader.vue       # 顶部导航栏
│       └── XiFooter.vue       # 底部状态栏
└── utils/
    └── font-loader.ts         # 字体加载器

核心组件

组件 说明 行数
XiIcon.vue 图标封装组件(Iconify 集成) 30
XiHeader.vue 顶部导航栏(Logo、菜单、用户) 206
XiFooter.vue 底部状态栏(索引、搜索、数据统计) 118

页面升级清单

已升级页面(10个)

页面/组件 说明 主要变更
App.vue 根布局组件 集成 XiHeader 和 XiFooter
XiHeader.vue 顶部导航栏 Logo、导航菜单、右侧操作区
XiFooter.vue 底部状态栏 索引统计、搜索统计、数据统计
Home.vue 搜索首页 搜索区域、多模态指示器、结果列表
SearchResultCard.vue 搜索结果卡片 卡片样式、图标、标签、操作按钮
Settings.vue 设置页面 标签页、表单、开关
Index.vue 索引管理页面 统计卡片、索引列表、模态框
GlossaryCollections.vue 术语库管理页面 列表、模态框、表单
GlossaryTerms.vue 术语管理页面 列表、模态框、表单、上传
Help.vue 帮助页面 FAQ、折叠面板、搜索
About.vue 关于作者页面 作者信息、联系方式、二维码

模态框样式升级

Ant Design Vue 模态框定制

使用 :deep() 选择器深度定制 Ant Design 组件:

/* 模态框容器 */
:deep(.ant-modal-content) {
  border-radius: var(--radius-xl);
  border: var(--border-standard);
  box-shadow: var(--shadow-elevated);
  background: var(--bg-primary);
}

/* 模态框头部 */
:deep(.ant-modal-header) {
  border-bottom: var(--border-standard);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  padding: var(--space-lg) var(--space-xl);
  background: var(--bg-secondary);
}

/* 模态框标题 */
:deep(.ant-modal-title) {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--text-lg);
  color: var(--text-primary);
}

/* 模态框内容 */
:deep(.ant-modal-body) {
  padding: var(--space-xl);
  color: var(--text-primary);
}

/* 模态框底部 */
:deep(.ant-modal-footer) {
  border-top: var(--border-standard);
  padding: var(--space-md) var(--space-xl);
  background: var(--bg-secondary);
  border-radius: 0 0 var(--radius-xl) var(--radius-xl);
}

/* 表单标签 */
:deep(.ant-form-item-label > label) {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: var(--text-sm);
  color: var(--text-primary);
}

/* 必填标记 */
.required-mark {
  color: #ff4d4f;
  margin-left: 4px;
}

/* 输入框 */
:deep(.ant-input) {
  border-radius: var(--radius-sm);
  border: var(--border-standard);
  background: var(--bg-primary);
  color: var(--text-primary);
  font-size: var(--text-sm);
}

:deep(.ant-input:focus),
:deep(.ant-input-focused) {
  border-color: var(--brand-blue);
  box-shadow: 0 0 0 2px rgba(0, 117, 222, 0.1);
}

/* 选择器 */
:deep(.ant-select-selector) {
  border-radius: var(--radius-sm) !important;
  border: var(--border-standard) !important;
  background: var(--bg-primary) !important;
  color: var(--text-primary) !important;
}

/* 按钮 */
:deep(.ant-btn) {
  border-radius: var(--radius-sm);
  font-weight: 500;
  transition: all var(--transition-base);
}

:deep(.ant-btn:hover) {
  transform: scale(1.02);
}

响应式设计

断点系统

/* 移动端(默认) */
@media (max-width: 768px) {
  .container {
    padding: var(--space-lg);
  }
}

/* 平板端 */
@media (min-width: 769px) and (max-width: 1024px) {
  .container {
    max-width: 960px;
  }
}

/* 桌面端 */
@media (min-width: 1025px) {
  .container {
    max-width: 1200px;
  }
}

响应式适配示例

页面 桌面端 平板端 移动端
顶部导航栏 水平菜单 水平菜单 折叠菜单
搜索首页 居中布局 居中布局 全宽布局
索引管理 4列统计 2列统计 1列统计
搜索结果 网格布局 网格布局 列表布局

🎨 设计规范

颜色使用规范

主色调

  • 品牌蓝色 #0075de:用于主按钮、链接、激活状态
  • 纯白色 #ffffff:用于主背景、卡片背景
  • 温暖白 #f6f5f4:用于次级背景、悬停状态

文字色系

  • 近黑色 rgba(0,0,0,0.95):主标题、重要文字
  • 次要灰色 #615d59:正文、次要信息
  • 三级灰色 #9a9590:辅助文字、占位符

功能色

  • 成功绿色 #52c41a:成功状态、完成标记
  • 警告橙色 #faad14:警告提示
  • 错误红色 #ff4d4f:错误提示、必填标记
  • 信息蓝色 #0075de:信息提示

间距使用规范

8px 基准系统

Token 使用场景
xs 4px 紧密间距
sm 8px 小间距
md 12px 中等间距
lg 16px 标准间距
xl 20px 大间距
2xl 24px 超大间距
3xl 32px 特大间距

使用原则

  • 卡片内边距:var(--space-xl) (20px)
  • 表单项间距:var(--space-lg) (16px)
  • 按钮内边距:var(--space-sm) var(--space-lg) (8px 16px)
  • 段落间距:var(--space-md) (12px)

圆角使用规范

Token 使用场景
xs 2px 小元素圆角
sm 4px 按钮、输入框
md 6px 标签、徽章
lg 10px 小卡片
xl 12px 大卡片、模态框
pill 9999px 胶囊按钮、标签

阴影使用规范

阴影层次

场景 阴影 说明
卡片默认 var(--shadow-card) 4层堆叠,微妙阴影
卡片悬停 var(--shadow-elevated) 5层堆叠,深层阴影
模态框 var(--shadow-elevated) 5层堆叠,突出显示
下拉菜单 var(--shadow-elevated) 5层堆叠,浮层效果

📊 性能提升

加载性能对比

指标 v1.x v2.0 提升
字体加载时间 200-500ms <10ms +98%
首屏渲染时间 2.0-2.5s <2.0s +20%
网络请求数 +2个 0个 +100%
离线可用性

运行时性能

指标 v1.x v2.0 说明
页面切换 100-150ms 100-150ms 持平
动画帧率 55-60fps 60fps 流畅度提升
内存占用 基准 基准 无增加

🔄 升级指南

从 v1.x 升级到 v2.0.0

自动升级

  • 数据库结构:无变化
  • 配置文件:无变化
  • 索引文件:无需重建
  • 用户数据:完全兼容

注意事项

  1. 首次启动:可能需要清除浏览器缓存,确保加载最新样式
  2. 系统字体:自动使用系统字体,无需手动配置
  3. 图标显示:首次使用时可能需要加载图标资源(<1s)

验证升级

  1. 打开小遥搜索
  2. 查看顶部导航栏是否为新的设计风格
  3. 查看搜索结果卡片是否使用新的卡片样式
  4. 检查模态框是否使用新的圆角和阴影

📖 使用示例

场景一:搜索体验升级

优化前

  • 搜索框:简单边框,无视觉层次
  • 结果卡片:平铺列表,信息密度高
  • 视觉感受:技术感强,但缺乏亲和力

优化后

  • 搜索框:居中布局,圆角设计,蓝色光晕
  • 结果卡片:精致卡片,阴影堆叠,清晰层次
  • 视觉感受:专业舒适,亲和力强

场景二:设置体验升级

优化前

  • 标签页:默认 Ant Design 样式
  • 表单:基础布局,视觉单调
  • 开关:标准样式,缺乏细节

优化后

  • 标签页:次级背景,圆角设计,激活状态清晰
  • 表单:垂直布局,标签左对齐,必填标记红色
  • 开关:品牌蓝色,平滑过渡

场景三:模态框体验升级

优化前

  • 模态框:标准样式,直角设计
  • 表单:默认布局,标签在左侧
  • 按钮:标准样式,无悬停效果

优化后

  • 模态框:12px圆角,深层阴影,次级背景头部
  • 表单:垂直布局,标签在上,必填标记在右(红色)
  • 按钮:4px圆角,悬停放大效果,品牌蓝色

❓ 常见问题

Q1: v2.0.0 需要重新索引吗?

A: 不需要。v2.0.0 仅升级了 UI 视觉系统,不涉及索引结构,现有索引可以直接使用。


Q2: 为什么使用系统字体而不是 Google Fonts?

A: 系统字体有以下优势:

  1. 零网络依赖:无需加载外部字体文件
  2. 加载速度极快:字体加载时间 < 10ms
  3. 离线可用:完全离线环境也能正常显示
  4. 系统集成:与操作系统风格一致
  5. 性能优化:减少网络请求,提升首屏渲染速度

Q3: Lucide Icons 与 Ant Design Icons 有什么区别?

A: Lucide Icons 是更现代的图标库:

对比项 Ant Design Icons Lucide Icons
图标数量 300+ 1000+
设计风格 传统 现代简洁
线条粗细 固定 可定制
按需加载 不支持 自动支持
更新频率 较低 持续更新

Q4: 如何使用自定义颜色?

A: 可以通过 CSS 变量自定义颜色:

/* 在全局样式或组件样式中覆盖 */
:root {
  --brand-blue: #0066cc;  /* 自定义品牌蓝色 */
  --bg-primary: #fafafa;   /* 自定义主背景色 */
}

Q5: 响应式设计支持哪些设备?

A: 支持以下设备:

设备类型 屏幕宽度 布局方式
桌面端 > 1024px 完整布局
平板端 769px - 1024px 适配布局
移动端 < 768px 紧凑布局

Q6: 如何关闭动画效果?

A: 可以通过 CSS 变量关闭动画:

:root {
  --transition-fast: 0ms;
  --transition-base: 0ms;
  --transition-slow: 0ms;
}

Q7: 模态框的必填标记为什么在右边?

A: 这是设计规范的选择,原因如下:

  1. 符合中文阅读习惯:从左到右阅读,* 作为补充信息在右边
  2. 视觉平衡:标签文字和 * 号在右侧形成视觉平衡
  3. 国际化友好:便于不同语言环境下调整位置

Q8: 如何为组件添加自定义样式?

A: 可以使用 CSS 变量和 scoped 样式:

<template>
  <div class="custom-component">
    <!-- 组件内容 -->
  </div>
</template>

<style scoped>
.custom-component {
  background: var(--bg-primary);
  border-radius: var(--radius-xl);
  padding: var(--space-xl);
  box-shadow: var(--shadow-card);
}
</style>

🏗️ 技术决策

本版本基于以下技术决策:


🙏 致谢

感谢以下开源项目的支持:

特别感谢 Notion 设计团队带来的灵感!


让我们一起打造更美好的搜索体验! 🚀


📝 版本历史

版本 日期 主要更新
v2.0.0 2026-04-24 UI视觉系统升级 v2.0 - Notion 温暖明亮设计风格、系统字体栈、Lucide Icons 图标系统、完整设计系统规范
v1.9.0 2026-04-12 术语扩展时机优化 + 并发控制优化
v1.8.0 2026-04-08 钉钉文档数据源支持
v1.7.0 2026-03-31 飞书文档数据源支持
v1.6.0 2026-03-26 云端嵌入模型支持 + Bug 修复
v1.5.0 2026-03-20 Agent Skills 支持
v1.4.0 2026-03-15 MCP 服务器支持
v1.3.0 2026-03-10 OpenAI 云端模型支持 + Bug 修复
v1.2.0 2026-03-05 插件化架构 + 语雀数据源
v1.1.0 2026-02-28 i18n 国际化支持
v1.0.0 2026-02-20 MVP 版本发布