Fix/frontend review findings #4

Merged
Kronecker merged 23 commits from fix/frontend-review-findings into main 2026-08-30 15:06:05 +08:00
Owner

变更概述

本次合并完善了前端 Markdown 写作体验、文件切换行为、模型提供商配置与模型发现能力,并完成智能体页面的中文本地化。同时补充了本地 API Key 加密存储及相关开发说明。

主要变更

Markdown 写作体验

  • 使用 Element Plus 图标替换界面中不必要的表情符号
  • 写作模式不再直接展示 Markdown 源码
  • 增加标题、粗体、斜体、有序列表、无序列表等 Markdown 格式操作
  • 增加行内代码、代码块、行内公式、公式块和链接插入
  • 支持选择文本后应用对应 Markdown 格式
  • 支持标题级别选择
  • 支持 Markdown 字号选择和手动输入
  • 修复正文默认加粗问题
  • 提高亮色主题下表格边框和列表序号的对比度
  • 汉化块级浮动菜单
  • 改善浮动格式栏在亮暗主题下的可见性
  • 代码块默认展开编辑,不额外展示 Shiki 预览区域

文件切换与编辑状态

  • 修复文件树点击后无法切换文件的问题
  • 修复可视化编辑器内部状态覆盖新文件内容的竞态
  • 增加文件切换回归测试
  • 验证顶部格式栏和选区浮动格式栏的实际编辑效果

Markdown 渲染

  • 统一 Markdown 内容渲染入口
  • 支持表格、任务列表、代码块和数学公式
  • 增加适配亮暗主题的代码高亮样式
  • 修复部分页面 Markdown 被当作普通文本显示的问题

模型提供商与模型发现

  • 增加 OpenAI、DeepSeek 和 Ollama 提供商预设
  • 增加 Provider 预设查询接口
  • 支持保存 Provider 后自动获取模型列表
  • 支持手动刷新模型列表
  • 支持选择和更新默认模型
  • 对模型列表进行排序和去重
  • 按 Provider 隔离模型加载状态和错误
  • 区分凭据缺失、鉴权失败、限流、超时等错误
  • 修复 DeepSeek 凭据解析及 HTTP 401 提示不明确的问题

API Key 本地加密

  • DeepSeek 和 OpenAI 预设支持直接填写 API Key
  • API Key 只在表单提交期间由前端持有
  • API Key 不写入 Pinia、localStorage 或 Provider 配置
  • 后端使用 Fernet 认证加密保存密钥
  • Provider 只保存 Credential ID,调用模型时按 ID 解密
  • 凭据读取接口只返回配置状态,不返回密钥明文
  • 支持环境变量作为无界面开发环境的回退来源
  • 密钥目录已加入 .gitignore

智能体页面汉化

  • 汉化智能体运行页面、运行列表、导航栏、标题栏和状态栏
  • 汉化运行状态和执行事件类型
  • 汉化工具名称、工具说明和权限名称
  • 汉化权限确认弹窗
  • 汉化事件详情中的常用字段、状态和布尔值
  • 保留 notes.search 等稳定技术标识,方便调试和日志排查
  • 修复完成事件仍显示英文 Mock 消息的问题

文档

  • 补充前端写作体验优化开发说明
  • 补充模型提供商与模型发现开发说明
  • 更新后端开发接口契约
  • 更新团队开发 README 中的环境和凭据配置说明
  • 记录本地加密边界及后续迁移 Stronghold 的要求

接口变更

新增接口:

  • GET /api/providers/presets
  • GET /api/credentials/{credential_id}
  • PUT /api/credentials/{credential_id}
  • DELETE /api/credentials/{credential_id}

完善接口:

  • GET /api/providers/{provider_id}/models
  • Provider 创建、更新和模型发现错误处理

安全说明

  • 仓库中没有提交真实 API Key
  • API 响应不会返回密钥明文
  • 本地密文和主密钥目录已排除版本控制
  • 当前 Fernet 存储用于开发阶段的本地静态加密
  • Tauri 集成后应将存储实现迁移到 Stronghold 或操作系统凭据库

验证结果

后端

uv run pytest
71 passed

前端测试

pnpm test -- --run
6 test files passed
14 tests passed

前端构建

pnpm build
构建成功

合并检查

  • git diff --check 通过
  • 与最新 gitea/main 模拟合并通过
  • 未发现合并冲突
  • 工作区干净
  • 远程分支已同步

已知非阻塞项

  • Vite 构建仍提示部分异步模块体积超过 500 kB,后续可以拆分编辑器和 Markdown 高亮依赖
  • Provider 配置目前沿用开发阶段的内存注册方式,正式桌面版本应持久化到应用状态数据库
  • openai_responsesanthropic_messages 仍属于后续 Adapter 实现范围;当前正式预设只使用已经实现的 OpenAI Chat、OpenAI-Compatible 和 Ollama
  • Windows 环境下 pytest 无法写入缓存目录时会产生警告,但不影响测试结果

合并建议

本次修改未发现新增的阻塞性缺陷,自动化测试、类型检查、生产构建和合并检查均已通过,建议合并。

## 变更概述 本次合并完善了前端 Markdown 写作体验、文件切换行为、模型提供商配置与模型发现能力,并完成智能体页面的中文本地化。同时补充了本地 API Key 加密存储及相关开发说明。 ## 主要变更 ### Markdown 写作体验 - 使用 Element Plus 图标替换界面中不必要的表情符号 - 写作模式不再直接展示 Markdown 源码 - 增加标题、粗体、斜体、有序列表、无序列表等 Markdown 格式操作 - 增加行内代码、代码块、行内公式、公式块和链接插入 - 支持选择文本后应用对应 Markdown 格式 - 支持标题级别选择 - 支持 Markdown 字号选择和手动输入 - 修复正文默认加粗问题 - 提高亮色主题下表格边框和列表序号的对比度 - 汉化块级浮动菜单 - 改善浮动格式栏在亮暗主题下的可见性 - 代码块默认展开编辑,不额外展示 Shiki 预览区域 ### 文件切换与编辑状态 - 修复文件树点击后无法切换文件的问题 - 修复可视化编辑器内部状态覆盖新文件内容的竞态 - 增加文件切换回归测试 - 验证顶部格式栏和选区浮动格式栏的实际编辑效果 ### Markdown 渲染 - 统一 Markdown 内容渲染入口 - 支持表格、任务列表、代码块和数学公式 - 增加适配亮暗主题的代码高亮样式 - 修复部分页面 Markdown 被当作普通文本显示的问题 ### 模型提供商与模型发现 - 增加 OpenAI、DeepSeek 和 Ollama 提供商预设 - 增加 Provider 预设查询接口 - 支持保存 Provider 后自动获取模型列表 - 支持手动刷新模型列表 - 支持选择和更新默认模型 - 对模型列表进行排序和去重 - 按 Provider 隔离模型加载状态和错误 - 区分凭据缺失、鉴权失败、限流、超时等错误 - 修复 DeepSeek 凭据解析及 HTTP 401 提示不明确的问题 ### API Key 本地加密 - DeepSeek 和 OpenAI 预设支持直接填写 API Key - API Key 只在表单提交期间由前端持有 - API Key 不写入 Pinia、localStorage 或 Provider 配置 - 后端使用 Fernet 认证加密保存密钥 - Provider 只保存 Credential ID,调用模型时按 ID 解密 - 凭据读取接口只返回配置状态,不返回密钥明文 - 支持环境变量作为无界面开发环境的回退来源 - 密钥目录已加入 `.gitignore` ### 智能体页面汉化 - 汉化智能体运行页面、运行列表、导航栏、标题栏和状态栏 - 汉化运行状态和执行事件类型 - 汉化工具名称、工具说明和权限名称 - 汉化权限确认弹窗 - 汉化事件详情中的常用字段、状态和布尔值 - 保留 `notes.search` 等稳定技术标识,方便调试和日志排查 - 修复完成事件仍显示英文 Mock 消息的问题 ### 文档 - 补充前端写作体验优化开发说明 - 补充模型提供商与模型发现开发说明 - 更新后端开发接口契约 - 更新团队开发 README 中的环境和凭据配置说明 - 记录本地加密边界及后续迁移 Stronghold 的要求 ## 接口变更 新增接口: - `GET /api/providers/presets` - `GET /api/credentials/{credential_id}` - `PUT /api/credentials/{credential_id}` - `DELETE /api/credentials/{credential_id}` 完善接口: - `GET /api/providers/{provider_id}/models` - Provider 创建、更新和模型发现错误处理 ## 安全说明 - 仓库中没有提交真实 API Key - API 响应不会返回密钥明文 - 本地密文和主密钥目录已排除版本控制 - 当前 Fernet 存储用于开发阶段的本地静态加密 - Tauri 集成后应将存储实现迁移到 Stronghold 或操作系统凭据库 ## 验证结果 ### 后端 ```text uv run pytest 71 passed ``` ### 前端测试 ```text pnpm test -- --run 6 test files passed 14 tests passed ``` ### 前端构建 ```text pnpm build 构建成功 ``` ### 合并检查 - `git diff --check` 通过 - 与最新 `gitea/main` 模拟合并通过 - 未发现合并冲突 - 工作区干净 - 远程分支已同步 ## 已知非阻塞项 - Vite 构建仍提示部分异步模块体积超过 500 kB,后续可以拆分编辑器和 Markdown 高亮依赖 - Provider 配置目前沿用开发阶段的内存注册方式,正式桌面版本应持久化到应用状态数据库 - `openai_responses` 和 `anthropic_messages` 仍属于后续 Adapter 实现范围;当前正式预设只使用已经实现的 OpenAI Chat、OpenAI-Compatible 和 Ollama - Windows 环境下 pytest 无法写入缓存目录时会产生警告,但不影响测试结果 ## 合并建议 本次修改未发现新增的阻塞性缺陷,自动化测试、类型检查、生产构建和合并检查均已通过,建议合并。 ```
Kronecker added 23 commits 2026-08-30 15:05:58 +08:00
Kronecker merged commit b70aac1934 into main 2026-08-30 15:06:05 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Kronecker/NotesAgentic#4