28 Commits
Author SHA1 Message Date
linshen 5c111d0d86 fix(session): persist optimization sessions reliably
- Commit basic and context optimization session updates

- Persist image and pro conversation optimization results

- Restore sessions safely after history reload
2026-05-12 22:58:09 +08:00
linshen f765a4fd39 feat(ui): improve output actions and link handling
- Clear stale history chain metadata when workspace state changes
- Centralize external URL opening behind a shared helper
- Add copy-and-open AI platform actions with localized labels
- Cover workspace and output action behavior with unit tests
2026-05-08 22:46:41 +08:00
linshen 23848a840d feat(favorites): refine prompt asset workspace flows
- Bind favorites to source assets and save targets throughout workspace actions
- Share the favorite editor/detail surfaces across dialogs and workspace panels
- Add provenance badges, utility-menu apply actions, and themed favorite panels
- Expand unit and integration coverage for favorite source and editor flows
2026-05-01 14:36:12 +08:00
linshen 93377e1b70 feat(favorites): standardize prompt asset sessions
- Add prompt-model services for content, examples, modes, sessions, and history
- Persist richer favorite prompt-asset metadata and session projections
- Wire favorite save/apply paths across supported workspaces
- Cover the new prompt-asset contract with core and UI regressions
2026-05-01 10:24:18 +08:00
linshen bf8c93828a fix(ui): normalize url image results 2026-04-03 21:14:23 +08:00
linshen 8e11ee784f test(evaluation): refresh unit, e2e, and VCR coverage
- expand core and ui regression coverage for analysis, result, and compare evaluation flows
- refresh text analysis and evaluation VCR fixtures after the workspace/result semantics change
- cover stale-state and analyze-created workspace behaviors in integration and e2e tests
2026-03-18 09:35:43 +08:00
linshen 64e1650607 feat(ui): add evaluation feedback editor and analyze flow 2026-02-09 23:48:55 +08:00
linshen 3115540cac fix(desktop): preserve structured IPC errors for i18n
Keep error code/params across contextBridge so renderer can translate errors reliably; harden UI error formatting and update vue-i18n test mocks.
2026-01-21 21:23:17 +08:00
linshen 8205df2dc1 fix(ui): harden workspaces, history restore, and image mode
- Harden workspace/session restore and initialization\n- Improve image mode behavior and storage handling\n- Update UI i18n and integration tests
2026-01-18 20:28:00 +08:00
linshen 7599020638 fix(i18n): translate structured core errors in UI
Align core errors to emit code+params and have UI render messages via i18n keys with interpolation, plus add tests for locale-specific output.
2026-01-17 12:56:55 +08:00
linshen 63ab9e66cd feat(test): 建立完整的测试基础设施和集成测试
- 建立 VCR 测试基础设施,支持 LLM API 回放
- 添加错误门禁和冒烟测试
- 添加 LLM 服务集成测试(P0)
- 记录测试进展并更新任务计划
2026-01-03 21:08:00 +08:00
linshen 6d21babfdd refactor(ui): 引入 Pinia 状态管理并重构服务访问
- 引入 Pinia 状态管理:创建 promptDraft store 和多个 session stores
- 重构服务访问:移除 $services 插件,统一服务访问方式
- 修复 session 存储竞态条件:使用 Pinia 的响应式系统
- 归档 Pinia 重构文档:记录完整的迁移过程
- 修正 MCP server bin 入口配置
2026-01-01 14:23:00 +08:00
linshen d8018dcc68 test(ui): 移除过度测试文件
删除 context-editor-sync.spec.ts 和 context-editor-refactor.spec.ts,
这些测试存在以下问题:
- Mock 过度复杂,维护成本高
- 测试的是 mock 配置而非真实组件行为
- 本地与 CI 环境因模块缓存差异导致结果不一致
2025-11-23 21:45:41 +08:00
linshen e4726cebce refactor(ui): 移除 quickTemplates 快速模板功能
- 删除 quickTemplates 数据目录及相关类型定义
- 移除 ContextEditor 中的模板管理标签页和预览弹窗
- 简化 App.vue 中的默认模板加载逻辑,改用硬编码默认值
- 清理 useContextManagement 中的自动加载模板逻辑
- 移除 useContextEditorUIState 中的 templates 标签页类型
- 清理 i18n 翻译文件中的模板相关 key
- 更新相关测试文件,移除模板 mock 和测试用例
2025-11-23 16:20:15 +08:00
linshen 21368fa678 fix(conversation): 修复多轮对话历史记录恢复问题并全面优化版本管理
核心修复:
- 修复多轮对话模式下 V2 及以上迭代版本无法正确恢复的 bug
- 修复消息顺序优化后历史记录恢复时,部分消息错误回溯到原始 (V0) 状态的 bug
- 在 iterateMessage 中手动预计算版本号,确保快照中的 appliedVersion 与实际保存的版本号一致
- 重构 useConversationOptimization.ts 中 getMessageAppliedVersion 函数,统一版本语义,使用 record.version 属性而非数组索引进行匹配
- 修正优化快照 (conversationSnapshot) 构建逻辑,确保当前优化消息的 appliedVersion 和 content 始终准确无误
- 改进 conversation optimizer 中的版本匹配机制,使用修剪后的字符串比较防止错误版本不匹配

功能增强:
- 新增完整的 iterateMessage 方法,支持多轮对话的消息级迭代优化
- 传递完整上下文数据(messages、selectedMessageId)给底层服务
- 对比测试时分别维护 originalToolCalls 和 optimizedToolCalls,确保工具调用结果互不干扰
- 在 prompt optimizer 历史元数据中添加 conversationSnapshot 以支持准确的状态恢复
- 重构优化流程,optimizeMessage 现在强制重置状态,避免状态污染

UI 优化:
- 调整版本标签显示顺序为 v3 v2 v1 v0(最新版本在前,v0 固定在最后)
- 优化版本切换交互体验

国际化支持:
- 修复 prompt optimizer 中的硬编码中文字符串,替换为 i18n 键
- 为多轮对话优化添加缺失的 i18n 键

代码质量:
- 删除所有调试日志(console.log)
- 添加模板处理边界情况注释(Mustache 空数组 vs undefined)
- 更新 App.vue (Web 和 Extension) 的历史记录恢复逻辑,通过 record.version 精确查找版本,增强了对历史记录删除(导致版本数组稀疏)的健壮性
- 为对话优化功能暂存未跟踪的新文件
2025-11-16 15:42:18 +08:00
linshen f0c5caf221 refactor(ui): 重构变量管理系统和编辑器代码结构
**架构重构**
- 从集中式变量管理迁移到分层架构(临时/全局/预定义)
- 废弃 ContextEditorState.variables,保持向后兼容
- 移除组件间不必要的 services prop 传递
- 添加 VariableManager 工厂函数和异步初始化机制
- 完善国际化支持,统一术语("上下文变量" → "临时变量")

**补全逻辑优化**
- 移除预定义变量的自动补全功能,简化补全列表
- 调整补全优先级:临时变量 (boost: 3) > 全局变量 (boost: 2) > 预定义变量 (boost: 1)
- 修改 global-variables 传递为仅自定义变量
- 新增 createVariableCompletionOption 函数,统一处理补全逻辑
- 智能检测光标后已有的右括号数量,动态计算需要插入的右括号数量

**UI 和代码结构优化**
- 新增 useContextEditorUIState composable 统一管理编辑器 UI 状态
- 消除 extension/web App.vue 中约 40 行重复代码
- 使用配置驱动方式简化标签页可见性逻辑
- 移除 watch(props.visible) 中的冗余 else 分支
- 合并重复的 CSS 规则
- 将卡片标题从"变量值设置"更改为"临时变量",更准确地反映功能定位
- 移除重复的"管理变量"按钮,避免与上方"全局变量"按钮功能重复

**代码清理和测试增强**
- 清理未使用的 handleOpenVariableManager 函数
- 消除重复的补全选项构建逻辑,提高代码可维护性
- 新增右括号补齐测试用例,增强现有测试使用实际编辑器视图模拟
- 更新所有相关测试用例,所有测试通过
- 提升整体代码可维护性和简洁性

影响范围:core, ui, web, extension
2025-10-26 21:14:39 +08:00
linshen b6b3765516 feat(ui): 实现 CodeMirror 6 变量高亮系统与完整测试套件
核心功能:
- 将 VariableAwareInput 从原生 textarea 升级到 CodeMirror 6
- 新增变量实时高亮功能 (全局/临时/预定义/缺失)
- 新增智能自动完成功能 (输入 {{ 触发)
- 新增缺失变量快捷添加功能
- 完善变量提取安全性机制
- 新增临时变量双向同步机制

测试覆盖:
- 新增集成测试覆盖完整用户工作流
- 新增 VariableAwareInput 组件单元测试
- 新增 useVariableDetection 组合式函数测试
- 新增选择安全机制和 CodeMirror 扩展测试
- 增强测试环境配置支持国际化和 Naive UI
- 总计 25 个测试文件 242 个测试用例全部通过

技术实现:
- 新增 useVariableDetection.ts 变量检测引擎
- 新增 codemirror-extensions.ts 扩展集合
- 重构 VariableAwareInput.vue 使用 CodeMirror 6
- 增强 ContextUserWorkspace.vue 临时变量管理
- 完善 TestAreaPanel.vue 变量同步事件
- 新增 variableDetection 国际化文案

架构亮点:
- 模块化架构设计,职责分离清晰
- 完善的变量边界保护机制
- 实时高亮与智能补全体验
- 类型安全的 TypeScript 实现
2025-10-25 18:58:33 +08:00
linshen cf2a6b2b79 feat(ui): 重构变量系统并实现测试区独立变量管理
## 核心功能

### 变量系统重构
- 移除会话变量系统,实现独立的测试变量功能
- 将 useContextManagement 从 web 模块迁移到 ui 模块
- 升级 usePromptTester 支持测试变量注入和上下文

### 测试区临时变量管理
- 临时变量数据结构升级为 { value, timestamp }
- 按时间戳降序排序显示(最新在前)
- 支持手动增删改操作
- 添加变量对话框,支持变量名验证
- 删除按钮,支持单个变量删除
- 与优化后提示词解耦,不再自动绑定

### 变量提取功能
- 新增 variable-extraction 组件目录
- VariableAwareInput: 支持文本选择提取变量
- VariableExtractionDialog: 变量提取对话框
- useTextSelection: 文本选择管理
- useInputHistory: 输入历史管理
- 支持全局/临时变量类型选择
- 支持全部替换功能

## 技术改进

### 组件优化
- TestAreaPanel.vue: testVariables 从 Record<string, string> 升级为 Record<string, TestVariable>
- InputPanel.vue: 集成 VariableAwareInput 组件,支持变量提取
- ContextUserWorkspace.vue: 新增 temporaryVariables 状态管理

### 国际化完善
- 补充缺失的 test.invalidVariables 和 test.getVariablesFailed 键
- 新增变量提取相关的完整国际化文本
- 覆盖中文简体/繁体/英文三种语言
- 同步三语言国际化键值(en-US/zh-CN/zh-TW)

## 其他更新
- 修复 web/extension 中未使用变量和错误 API 调用
- 更新测试文件的组件导入路径
- 清理过度 debug 日志
- 更新相关文档(ui-refactor-plan.md, variable-system-redesign.md)

## 相关 Issue
- 解决测试区变量显示依赖优化结果的问题
- 实现变量独立管理需求
- 补充缺失的国际化文本

**测试:所有测试通过(core: 367, ui: 95)**
2025-10-25 14:54:38 +08:00
linshen ba63eff9ad feat: 重构图像模型管理架构并优化用户界面
## 核心改进

### 🏗️ 架构重构
- 实现ImageModelManager组件分离设计,关注点明确分离
- 重构ModelManager.vue为统一模型管理入口,支持文本/图像双模式
- 采用组件复用和扩展性设计,易于添加新模型类型

### 🎨 界面优化
- 摒弃5步导航式编辑,改为一体化界面设计
- 优化ImageModelEditModal为单页滚动布局,提升操作效率
- 统一文本和图像模型管理的交互体验和视觉风格

### 🔌 适配器扩展
- 新增OpenRouter和SiliconFlow图像适配器支持
- 完善AbstractImageProviderAdapter抽象基类设计
- 优化适配器注册表和动态模型发现机制

### 💻 类型系统
- 完善ImageModelConfig和相关类型定义
- 增强TypeScript类型安全和智能提示
- 优化服务层接口设计和依赖注入架构

### 🧪 测试覆盖
- 新增图像适配器单元测试和集成测试
- 添加E2E验收测试保证功能完整性
- 增强连接测试和参数验证测试覆盖

### 📚 文档完善
- 新增图像模型管理架构设计文档
- 添加一体化界面改进方案文档
- 更新项目结构和开发指南

## 技术特点

- **SOLID原则**:清晰的单一职责和开闭扩展设计
- **组合模式**:ImageModelManager + ModelManager.vue 组合架构
- **响应式设计**:基于Vue 3 Composition API的状态管理
- **依赖注入**:松耦合的服务架构和组件通信

这次重构显著提升了图像模型管理的用户体验和代码可维护性,
为后续音频、视频等多模态功能扩展奠定了坚实基础。
2025-09-21 20:17:03 +08:00
linshen 6e4917852a feat: 实现全局功能模式系统与上下文模板架构
* 新增全局功能模式切换(basic/pro)
  - 实现 useFunctionMode 组合式函数
  - 支持模式记忆与持久化存储
  - 自动模板类型映射与切换

* 重构模板系统架构
  - 新增6类模板类型:基础3类 + 上下文3类
  - 实现上下文模板(contextSystemOptimize、contextUserOptimize、contextIterate)
  - 统一存储键管理,解决跨包重复定义问题

* 增强上下文驱动优化
  - 新增14个上下文版本模板(中英双语)
  - 支持会话上下文、工具上下文传递
  - 实现变量优先级管理系统

* 优化用户体验
  - 模式切换自动通知与反馈
  - 模板选择状态分离保存
  - UI组件响应式更新

* 改进代码质量
  - 遵循SOLID、DRY、KISS原则
  - 完善TypeScript类型定义
  - 清理冗余测试文件

测试结果:所有功能完美工作,优化效果显著提升
2025-09-14 00:07:01 +08:00
linshen e7687dfd8c feat: 新增toolsContext预定义变量支持
- 在核心常量中添加toolsContext变量定义
  - 用于快速模板中的{{toolsContext}}变量替换
  - 支持系统自动注入可用工具信息

- 更新变量编辑器和导入器
  - 将toolsContext加入预定义变量过滤列表
  - 防止用户创建同名自定义变量产生冲突

- 完善国际化支持
  - 中英文添加toolsContext变量说明文案
  - 标注为系统自动注入的工具信息

- 更新相关测试用例
  - 集成测试中同步更新预定义变量列表
  - 确保测试覆盖新增变量的处理逻辑

这个变更为工具上下文模板提供了完整的变量系统支持。
2025-09-11 21:11:03 +08:00
linshen f04b88436a feat: 实现完整的上下文持久化与变量管理系统
新增核心功能:
- 基于单文档存储的上下文仓库(ContextRepo),支持CRUD和导入导出
- 预定义变量保护机制,防止系统变量被意外覆盖
- 上下文级变量管理,支持独立的变量作用域
- 完整的Electron IPC代理层,支持跨进程通信
- DataManager集成上下文服务,统一数据导入导出接口

技术实现亮点:
- 使用updateData原子操作确保并发安全
- 三种导入模式(replace/append/merge)灵活应对不同场景
- 完整的TypeScript类型安全和错误处理体系
- 38个单元测试用例覆盖所有核心功能
- 国际化支持,移除所有硬编码字符串

架构优化:
- 严格遵循SOLID原则的模块设计
- Repository模式实现数据持久化抽象
- 工厂模式支持多环境部署(Web/Desktop)
- 统一的IImportExportable接口规范

UI增强:
- 上下文编辑器支持实时持久化和变量管理
- 数据管理器新增上下文导入导出功能
- 完整的中英文国际化资源

文件变更:
- 新增: packages/core/src/services/context/* (核心服务)
- 新增: packages/core/tests/unit/context/* (单元测试)
- 更新: DataManager支持上下文服务集成
- 更新: Electron主进程和预加载脚本IPC处理
- 更新: UI组件支持上下文功能和国际化

此次提交完成了上下文持久化功能的完整实现,为用户提供了
强大的对话上下文管理和变量系统,显著提升了应用的易用性。
2025-09-07 10:23:25 +08:00
linshen 9a4de02438 feat: 完成上下文编辑器重构、组件清理与文档整合
此次提交整合了上下文编辑器的大规模重构、废弃组件的清理以及workspace文档的更新,旨在提升系统性能、代码可维护性和开发体验。

### 主要更新
- **上下文编辑器重构**:
    - 移除 ConversationMessageEditor, ConversationSection 等废弃组件。
    - 清理 ConversationManager 和 ContextEditor 未使用的 props。
    - 实现无障碍功能增强和焦点管理。
    - 创建新的工具 composables 和组件类型。
    - 添加全面的测试覆盖和性能监控。

- **组件与代码清理**:
    - 移除重构前的 `VariableManager.vue` 组件及其导出(497行),由 `VariableManagerModal.vue` 替代。
    - 删除已废弃的 `AdvancedTestPanel.vue` 组件及其导出,已被 `TestAreaPanel` 统一组件完全替代。
    - 清理未使用的 `VariableImportExport.vue` 组件、相关测试文件和类型定义。
    - 遵循 YAGNI 原则,确保移除的组件在任何地方均未被使用。
    - 构建包大小减少约 55KB(3552KB -> 3497KB)。

- **Workspace文档整合**:
    - 归档完整的 Naive UI 迁移项目 (包含8个综合文档)。
    - 补充上下文编辑器重构缺失的spec工作流文档。
    - 建立 `docs/examples/` 目录提供配置模板。
    - 更新归档 `INDEX.md` 多维度快速查找索引。
    - 清理 workspace 目录中15个重复文档。

### 技术改进与优化
- 优化 Git 配置,将 `tsconfig.tsbuildinfo` 从追踪中移除并增强 `.gitignore` 规则覆盖所有 `tsbuildinfo` 文件。
- 添加高级 TypeScript 类型和组件接口,实现工具调用显示和变量导入导出组件。
- 增强变量管理与编辑器集成,并保持 `VariableManager.ts` 服务层(仍在使用)。
- 添加全面的单元测试和e2e测试覆盖,改进开发文档和API指南。
- 所有现有功能完整性验证通过,无构建错误或运行时错误。
2025-09-06 23:45:42 +08:00
linshen 6c6b68726f feat: 接口驱动架构改造与TemplateManager重构
本次提交主要完成了以下变更:

- 在`experience.md`中新增接口驱动架构改造的核心原则、最佳实践和审核检查清单,确保所有模块通过明确定义的接口进行交互。
- 重构`TemplateManager`,移除复杂的异步初始化逻辑,简化其依赖关系,确保其只关注核心业务。
- 在`scratchpad.md`中更新当前任务进展,记录了对各个服务的重构状态和计划步骤。
- 在`todo.md`中添加了紧急任务和重要任务,确保架构改造的顺利进行。

这些更新旨在提升项目的可维护性和一致性,确保开发者能够更专注于核心功能的开发。
2025-06-29 20:31:42 +08:00
linshen 14ef914dee feat(template): 新增确保管理器初始化的方法并更新优化模式选择器
- 在模板管理器接口中新增 `ensureInitialized` 方法,确保管理器在使用前已正确初始化
- 更新多个组件和测试用例,将提示词类型更改为优化模式,提升代码一致性
- 修改国际化文件,确保优化模式相关文本的多语言支持
- 重构输入面板和优化面板,整合优化模式选择器,提升用户体验
2025-06-21 19:17:57 +08:00
linshen ff21975d9d feat(template): 重构模板管理,每个功能提示词版本单独一个文件
- 移除默认模板文件,改为使用静态加载器加载模板
- 在模板元数据中添加语言字段,支持中英文模板切换
- 更新模板验证逻辑,确保语言字段的正确性
- 修改相关测试用例,验证新功能的正确性和稳定性
2025-06-19 22:17:23 +08:00
linshen d00fda6cec feat(prompt): 优化提示词服务和用户界面,简化上下文提示词要求
- 移除对 contextPrompt 的强制要求,提升用户体验
- 更新测试用例,验证新功能的正确性
- 修改国际化文件,去掉不必要的提示信息
- 优化模型管理测试,确保新增模型的正确性
2025-06-18 22:25:03 +08:00
linshen ebf4d2730b feat(prompt): 增强提示词服务以支持用户和系统提示词优化
- 新增提示词类型选择功能,允许用户选择优化模式(系统或用户)
- 更新优化提示词接口,支持传入优化请求对象
- 修改相关模板管理和测试用例,以适应新的提示词类型
- 增强国际化支持,更新相关语言文件以反映新功能
2025-06-18 22:25:02 +08:00