Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 52 additions & 46 deletions CHANGELOG.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,71 +1,77 @@
## 0.56.8 (2026-01-29)
## 0.56.9 (2026-01-29)

### 📦 src 模块

### ✨ Features

- **ai**: 扩展Gemini模型支持并优化AI提供商接口 ([11d15e2](https://github.com/littleCareless/dish-ai-commit/commit/11d15e2))
- **settings**: 扩展功能设置管理器以支持细粒度提示词配置 ([daf4157](https://github.com/littleCareless/dish-ai-commit/commit/daf4157))
- **core**: 新增提交生成协调器与AI提供商管理器 ([95bf37b](https://github.com/littleCareless/dish-ai-commit/commit/95bf37b))
- **webview**: 新增工作区信息获取功能并重构提示词管理系统 ([14d2b0b](https://github.com/littleCareless/dish-ai-commit/commit/14d2b0b))
- **prompts**: 新增提交生成子分类系统并优化提示词元数据 ([52030d0](https://github.com/littleCareless/dish-ai-commit/commit/52030d0))
- **ui**: 优化 Tooltip 组件样式并增强 VS Code 主题兼容性 ([9e508fc](https://github.com/littleCareless/dish-ai-commit/commit/9e508fc))
- **prompts**: 重构提示词管理系统并新增核心模块 ([506e281](https://github.com/littleCareless/dish-ai-commit/commit/506e281))
- **prompts**: 新增分层提交引导和系统机制说明 ([d7a78c1](https://github.com/littleCareless/dish-ai-commit/commit/d7a78c1))
- **prompts**: 新增提示词管理界面组件并优化创建模态框 ([e4b8073](https://github.com/littleCareless/dish-ai-commit/commit/e4b8073))
- **utils**: 引入Logger类并优化日志记录与代码格式 ([0bae0c8](https://github.com/littleCareless/dish-ai-commit/commit/0bae0c8))
- **webview**: 添加Webview握手消息与会话管理类型 ([83eac9e](https://github.com/littleCareless/dish-ai-commit/commit/83eac9e))
- **chore**: 新增 GitHub 社区与反馈模板体系 ([121b3bc](https://github.com/littleCareless/dish-ai-commit/commit/121b3bc))

### 🐛 Bug Fixes

- **fix**: resolve context pipeline reentrancy issue ([c9e8510](https://github.com/littleCareless/dish-ai-commit/commit/c9e8510))

### ♻️ Code Refactoring

- **ai**: 重构AI提供者抽象类与工具函数,优化日志记录和代码格式 ([77bd20e](https://github.com/littleCareless/dish-ai-commit/commit/77bd20e))
- **generate-commit**: 重构提交信息生成管道,优化缓存机制与流式生成逻辑 ([1a42c2e](https://github.com/littleCareless/dish-ai-commit/commit/1a42c2e))
- **webview**: 重构会话管理机制以提升模块化和健壮性 ([3b46078](https://github.com/littleCareless/dish-ai-commit/commit/3b46078))
- **webview**: 引入会话管理器重构应用启动流程 ([e1fd804](https://github.com/littleCareless/dish-ai-commit/commit/e1fd804))

### 🔧 Chores

- **ci**: 优化发布流程,支持手动触发和试运行 ([7c83104](https://github.com/littleCareless/dish-ai-commit/commit/7c83104))
- **pre-push**: 添加标签检查防止非法标签创建 ([459655a](https://github.com/littleCareless/dish-ai-commit/commit/459655a))
- v0.56.8 ([09b3d75](https://github.com/littleCareless/dish-ai-commit/commit/09b3d75))
- **refactor**: 重构代码格式并增强类型安全 ([57379e5](https://github.com/littleCareless/dish-ai-commit/commit/57379e5))
- v0.56.7 ([c9086e8](https://github.com/littleCareless/dish-ai-commit/commit/c9086e8))
- **chore**: 添加 .zcf 目录到 .gitignore ([5eaf562](https://github.com/littleCareless/dish-ai-commit/commit/5eaf562))
- **webview**: 重构提示词管理钩子并增强类型安全 ([b20a8bd](https://github.com/littleCareless/dish-ai-commit/commit/b20a8bd))
- **scm**: 增强仓库检测链路追踪并扩展SCM接口功能 ([b71b941](https://github.com/littleCareless/dish-ai-commit/commit/b71b941))
- **commands**: 重构命令执行流程并优化AI上下文管理 ([8fa4ab3](https://github.com/littleCareless/dish-ai-commit/commit/8fa4ab3))
- **eslint**: 添加 react-hooks/exhaustive-deps 规则并更新构建信息 ([fd4ac63](https://github.com/littleCareless/dish-ai-commit/commit/fd4ac63))

### 🖥️ webview-ui 模块

### ✨ Features

- **ai**: 扩展Gemini模型支持并优化AI提供商接口 ([11d15e2](https://github.com/littleCareless/dish-ai-commit/commit/11d15e2))
- **settings**: 扩展功能设置管理器以支持细粒度提示词配置 ([daf4157](https://github.com/littleCareless/dish-ai-commit/commit/daf4157))
- **core**: 新增提交生成协调器与AI提供商管理器 ([95bf37b](https://github.com/littleCareless/dish-ai-commit/commit/95bf37b))
- **webview**: 新增工作区信息获取功能并重构提示词管理系统 ([14d2b0b](https://github.com/littleCareless/dish-ai-commit/commit/14d2b0b))
- **prompts**: 新增提交生成子分类系统并优化提示词元数据 ([52030d0](https://github.com/littleCareless/dish-ai-commit/commit/52030d0))
- **ui**: 优化 Tooltip 组件样式并增强 VS Code 主题兼容性 ([9e508fc](https://github.com/littleCareless/dish-ai-commit/commit/9e508fc))
- **prompts**: 重构提示词管理系统并新增核心模块 ([506e281](https://github.com/littleCareless/dish-ai-commit/commit/506e281))
- **prompts**: 新增分层提交引导和系统机制说明 ([d7a78c1](https://github.com/littleCareless/dish-ai-commit/commit/d7a78c1))
- **prompts**: 新增提示词管理界面组件并优化创建模态框 ([e4b8073](https://github.com/littleCareless/dish-ai-commit/commit/e4b8073))
- **utils**: 引入Logger类并优化日志记录与代码格式 ([0bae0c8](https://github.com/littleCareless/dish-ai-commit/commit/0bae0c8))
- **webview**: 添加Webview握手消息与会话管理类型 ([83eac9e](https://github.com/littleCareless/dish-ai-commit/commit/83eac9e))
- **chore**: 新增 GitHub 社区与反馈模板体系 ([121b3bc](https://github.com/littleCareless/dish-ai-commit/commit/121b3bc))

### 🐛 Bug Fixes

- **fix**: resolve context pipeline reentrancy issue ([c9e8510](https://github.com/littleCareless/dish-ai-commit/commit/c9e8510))

### ♻️ Code Refactoring

- **ai**: 重构AI提供者抽象类与工具函数,优化日志记录和代码格式 ([77bd20e](https://github.com/littleCareless/dish-ai-commit/commit/77bd20e))
- **generate-commit**: 重构提交信息生成管道,优化缓存机制与流式生成逻辑 ([1a42c2e](https://github.com/littleCareless/dish-ai-commit/commit/1a42c2e))
- **webview**: 重构会话管理机制以提升模块化和健壮性 ([3b46078](https://github.com/littleCareless/dish-ai-commit/commit/3b46078))
- **webview**: 引入会话管理器重构应用启动流程 ([e1fd804](https://github.com/littleCareless/dish-ai-commit/commit/e1fd804))

### 🔧 Chores

- **ci**: 优化发布流程,支持手动触发和试运行 ([7c83104](https://github.com/littleCareless/dish-ai-commit/commit/7c83104))
- **pre-push**: 添加标签检查防止非法标签创建 ([459655a](https://github.com/littleCareless/dish-ai-commit/commit/459655a))
- v0.56.8 ([09b3d75](https://github.com/littleCareless/dish-ai-commit/commit/09b3d75))
- **refactor**: 重构代码格式并增强类型安全 ([57379e5](https://github.com/littleCareless/dish-ai-commit/commit/57379e5))
- v0.56.7 ([c9086e8](https://github.com/littleCareless/dish-ai-commit/commit/c9086e8))
- **chore**: 添加 .zcf 目录到 .gitignore ([5eaf562](https://github.com/littleCareless/dish-ai-commit/commit/5eaf562))
- **webview**: 重构提示词管理钩子并增强类型安全 ([b20a8bd](https://github.com/littleCareless/dish-ai-commit/commit/b20a8bd))
- **scm**: 增强仓库检测链路追踪并扩展SCM接口功能 ([b71b941](https://github.com/littleCareless/dish-ai-commit/commit/b71b941))
- **commands**: 重构命令执行流程并优化AI上下文管理 ([8fa4ab3](https://github.com/littleCareless/dish-ai-commit/commit/8fa4ab3))
- **eslint**: 添加 react-hooks/exhaustive-deps 规则并更新构建信息 ([fd4ac63](https://github.com/littleCareless/dish-ai-commit/commit/fd4ac63))

### ✨ Features

- **ai**: 扩展Gemini模型支持并优化AI提供商接口 ([11d15e2](https://github.com/littleCareless/dish-ai-commit/commit/11d15e2))
- **settings**: 扩展功能设置管理器以支持细粒度提示词配置 ([daf4157](https://github.com/littleCareless/dish-ai-commit/commit/daf4157))
- **core**: 新增提交生成协调器与AI提供商管理器 ([95bf37b](https://github.com/littleCareless/dish-ai-commit/commit/95bf37b))
- **webview**: 新增工作区信息获取功能并重构提示词管理系统 ([14d2b0b](https://github.com/littleCareless/dish-ai-commit/commit/14d2b0b))
- **prompts**: 新增提交生成子分类系统并优化提示词元数据 ([52030d0](https://github.com/littleCareless/dish-ai-commit/commit/52030d0))
- **ui**: 优化 Tooltip 组件样式并增强 VS Code 主题兼容性 ([9e508fc](https://github.com/littleCareless/dish-ai-commit/commit/9e508fc))
- **prompts**: 重构提示词管理系统并新增核心模块 ([506e281](https://github.com/littleCareless/dish-ai-commit/commit/506e281))
- **prompts**: 新增分层提交引导和系统机制说明 ([d7a78c1](https://github.com/littleCareless/dish-ai-commit/commit/d7a78c1))
- **prompts**: 新增提示词管理界面组件并优化创建模态框 ([e4b8073](https://github.com/littleCareless/dish-ai-commit/commit/e4b8073))
- **utils**: 引入Logger类并优化日志记录与代码格式 ([0bae0c8](https://github.com/littleCareless/dish-ai-commit/commit/0bae0c8))
- **webview**: 添加Webview握手消息与会话管理类型 ([83eac9e](https://github.com/littleCareless/dish-ai-commit/commit/83eac9e))
- **chore**: 新增 GitHub 社区与反馈模板体系 ([121b3bc](https://github.com/littleCareless/dish-ai-commit/commit/121b3bc))

### 🐛 Bug Fixes

- **fix**: resolve context pipeline reentrancy issue ([c9e8510](https://github.com/littleCareless/dish-ai-commit/commit/c9e8510))

### ♻️ Code Refactoring

- **ai**: 重构AI提供者抽象类与工具函数,优化日志记录和代码格式 ([77bd20e](https://github.com/littleCareless/dish-ai-commit/commit/77bd20e))
- **generate-commit**: 重构提交信息生成管道,优化缓存机制与流式生成逻辑 ([1a42c2e](https://github.com/littleCareless/dish-ai-commit/commit/1a42c2e))
- **webview**: 重构会话管理机制以提升模块化和健壮性 ([3b46078](https://github.com/littleCareless/dish-ai-commit/commit/3b46078))
- **webview**: 引入会话管理器重构应用启动流程 ([e1fd804](https://github.com/littleCareless/dish-ai-commit/commit/e1fd804))

### 🔧 Chores

- **ci**: 优化发布流程,支持手动触发和试运行 ([7c83104](https://github.com/littleCareless/dish-ai-commit/commit/7c83104))
- **pre-push**: 添加标签检查防止非法标签创建 ([459655a](https://github.com/littleCareless/dish-ai-commit/commit/459655a))
- v0.56.8 ([09b3d75](https://github.com/littleCareless/dish-ai-commit/commit/09b3d75))
- **refactor**: 重构代码格式并增强类型安全 ([57379e5](https://github.com/littleCareless/dish-ai-commit/commit/57379e5))
- v0.56.7 ([c9086e8](https://github.com/littleCareless/dish-ai-commit/commit/c9086e8))
- **chore**: 添加 .zcf 目录到 .gitignore ([5eaf562](https://github.com/littleCareless/dish-ai-commit/commit/5eaf562))
- **webview**: 重构提示词管理钩子并增强类型安全 ([b20a8bd](https://github.com/littleCareless/dish-ai-commit/commit/b20a8bd))
- **scm**: 增强仓库检测链路追踪并扩展SCM接口功能 ([b71b941](https://github.com/littleCareless/dish-ai-commit/commit/b71b941))
- **commands**: 重构命令执行流程并优化AI上下文管理 ([8fa4ab3](https://github.com/littleCareless/dish-ai-commit/commit/8fa4ab3))
- **eslint**: 添加 react-hooks/exhaustive-deps 规则并更新构建信息 ([fd4ac63](https://github.com/littleCareless/dish-ai-commit/commit/fd4ac63))
59 changes: 59 additions & 0 deletions REFACTOR_PROGRESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Context Pipeline Reentrancy 重构任务进度

**开始时间**: 2026-01-29
**目标**: 解决生成链路重复执行问题,实现一次用户意图 = 一次生成事务

---

## 🎯 任务目标

- ✅ 同一代码变更只生成一次
- ✅ SCM 检测只执行一次
- ✅ Prompt/Context 构建只执行一次
- ✅ Token 使用量稳定

---

## 📋 任务清单

### 阶段 1:创建测试分支

- [ ] 创建并切换到 `fix/context-pipeline-reentrancy` 分支

### 阶段 2:创建核心基础设施文件

- [ ] 创建 `src/core/generation-transaction.ts`
- [ ] 创建 `src/core/generation-gate.ts`
- [ ] 创建 `src/core/scm-context-cache.ts`
- [ ] 创建 `src/core/generation-orchestrator.ts`

### 阶段 3:改造现有文件

- [ ] 改造 `src/services/core/scm-detector-service.ts`
- [ ] 改造 `src/commands/generate-commit/builders/context-builder.ts`
- [ ] 改造 `src/commands/generate-commit/utils/streaming-generation-helper.ts`

### 阶段 4:更新导出

- [ ] 更新 `src/core/index.ts`

### 阶段 5:编译测试

- [ ] 运行编译检查
- [ ] 修复编译错误(如有)

### 阶段 6:提交代码

- [ ] 提交代码到 git
- [ ] 推送到远程仓库

---

## 📊 执行日志

### 2026-01-29 - 任务初始化

- 创建进度跟踪文档
- 准备开始执行重构

---
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"packageManager": "pnpm@10.26.2",
"displayName": "Dish AI Commit Message Gen",
"description": "🤖 由 AI 提供支持的 VSCode 扩展,用于生成标准化的 Git/SVN 提交消息 - 🤖 AI-Powered VSCode extension for generating standardized Git/SVN commit messages. ✨ Supports multiple AI services: OpenAI, ChatGPT, Ollama, Zhipu, DashScope, Doubao, Gemini and VS Code built-in AI. 🌍 Multi-language support (EN/CN/JP/KR/Other). 📊 Auto-generate weekly reports.",
"version": "0.56.8",
"version": "0.56.9",
"engines": {
"node": ">= 18.20.8",
"pnpm": ">= 10.0.0"
Expand Down
6 changes: 6 additions & 0 deletions shared/types/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
// 命名格式: 模块.动作 (module.action)
// ============================================================================
export enum UIRequest {
// ===== Lifecycle =====
WebviewHandshake = "webview.handshake",

// ===== Notification Module =====
NotificationGetSettings = "notification.getSettings",
NotificationUpdateSettings = "notification.updateSettings",
Expand Down Expand Up @@ -106,6 +109,9 @@ export enum UIRequest {
// 命名格式: 模块.状态/结果 (module.state/result)
// ============================================================================
export enum ExtensionResponse {
// ===== Lifecycle =====
WebviewHandshakeAck = "webview.handshake.ack",

// ===== Notification Module =====
NotificationSettingsLoaded = "notification.settingsLoaded",
NotificationSettingsUpdated = "notification.settingsUpdated",
Expand Down
134 changes: 134 additions & 0 deletions shared/types/sessions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
// ============================================================================
// Session Types for Webview Communication
// 会话管理类型定义,用于防止消息重复执行
// ============================================================================

/**
* Webview 会话阶段枚举
*
* BOOT: 初始加载阶段,webview 刚创建
* HANDSHAKE: 握手中阶段,正在与 extension 建立会话
* READY: 已就绪阶段,可以处理业务消息
* TERMINATED: 已终止阶段,webview 已被销毁
*/
export enum WebviewPhase {
BOOT = "boot",
HANDSHAKE = "handshake",
READY = "ready",
TERMINATED = "terminated",
}

/**
* Webview 会话信息
*
* sessionId: 唯一会话标识符
* phase: 当前会话阶段
* initializedServices: 已初始化的服务名称集合
* createdAt: 会话创建时间
*/
export interface WebviewSession {
sessionId: string;
phase: WebviewPhase;
initializedServices: Set<string>;
createdAt: number;
}

/**
* 握手消息结构 (Webview → Extension)
*
* sessionId: 唯一会话标识符
* timestamp: 时间戳
* capabilities: 前端能力列表(可扩展)
*/
export interface HandshakeMessage {
sessionId: string;
timestamp: number;
capabilities: string[];
}

/**
* 握手确认消息结构 (Extension → Webview)
*
* sessionId: 确认的会话标识符
* timestamp: 响应时间戳
* success: 是否成功
*/
export interface HandshakeAckMessage {
sessionId: string;
timestamp: number;
success: boolean;
}

/**
* 消息去重信息
*
* messageId: 消息唯一标识
* timestamp: 消息时间戳
* sessionId: 关联的会话 ID
*/
export interface MessageDeduplicationInfo {
messageId: string;
timestamp: number;
sessionId: string;
}

/**
* 服务初始化状态
*
* serviceName: 服务名称
* initialized: 是否已初始化
* timestamp: 初始化时间戳
* error: 错误信息(如果有)
*/
export interface ServiceInitializationStatus {
serviceName: string;
initialized: boolean;
timestamp?: number;
error?: string;
}

/**
* 会话统计信息
*
* sessionId: 会话 ID
* phase: 当前阶段
* uptime: 运行时长(毫秒)
* messagesProcessed: 已处理的消息数
* messagesDuplicated: 被去重的消息数
* servicesInitialized: 已初始化的服务数
*/
export interface SessionStatistics {
sessionId: string;
phase: WebviewPhase;
uptime: number;
messagesProcessed: number;
messagesDuplicated: number;
servicesInitialized: number;
}

// ============================================================================
// Session Lifecycle Events
// ============================================================================

/**
* 会话事件类型
*/
export enum SessionEventType {
SESSION_CREATED = "session.created",
SESSION_HANDSHAKE = "session.handshake",
SESSION_READY = "session.ready",
SESSION_TERMINATED = "session.terminated",
SERVICE_INITIALIZED = "service.initialized",
MESSAGE_DUPLICATED = "message.duplicated",
MESSAGE_PROCESSED = "message.processed",
}

/**
* 会话事件
*/
export interface SessionEvent {
type: SessionEventType;
sessionId: string;
timestamp: number;
data?: Record<string, unknown>;
}
Loading
Loading