Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
14f5bc0
✨ feat(ai): add model registry and catalog sync services
littleCareless Mar 11, 2026
636425a
✨ feat(settings): add features settings management
littleCareless Mar 11, 2026
2904def
🔧 refactor(ui): unify command palette and welcome page
littleCareless Mar 11, 2026
6b773d8
🔧 fix(ui): resolve TypeScript errors in settings components
littleCareless Mar 11, 2026
b9704d9
🔧 refactor(commit): dedup generation pipeline and enable cross-repo r…
littleCareless Mar 24, 2026
3ede345
♻️ refactor(core): remove duplicate services and orphan command imple…
littleCareless Mar 24, 2026
dc2bb3b
🔧 chore(scm): unify critical-path logging/menu and publish verificati…
littleCareless Mar 24, 2026
92cc037
♻️ refactor(core): remove disconnected orchestration scaffolds
littleCareless Mar 24, 2026
58c0c59
♻️ refactor(commit): orchestrate generation flow and unify diff targe…
littleCareless Mar 25, 2026
54f0cc8
🔧 chore(protocol): add audit workflow and align webview messaging
littleCareless Mar 25, 2026
197cb45
🔧 fix(commit): complete generation result typing
littleCareless Mar 25, 2026
ea17db8
♻️ refactor(ai): standardize provider logging and runtime diagnostics
littleCareless Mar 25, 2026
f2bd596
:wrench: chore: checkpoint current changes
littleCareless Mar 25, 2026
beb63fa
:bug: fix: isolate git/svn cache keys for prompts and commit cache
littleCareless Mar 25, 2026
1794064
♻️ refactor(commit): remove unused target resources path
littleCareless Mar 25, 2026
41459a6
🔧 fix(scm): harden multi-repo boundaries and provider routing
littleCareless Mar 25, 2026
79f57a1
✨ feat(commit): improve generation resilience and prompt-aware cache
littleCareless Mar 25, 2026
dc447b7
♻️ refactor(commands): return structured execution status
littleCareless Mar 25, 2026
07f9f8a
🐛 fix(commit): align layered generation config and diff snapshots
littleCareless Mar 25, 2026
456066f
🐛 fix(webview): prevent message dedupe drops on page re-entry
littleCareless Mar 25, 2026
d0057ca
chore(release): v0.59.0
littleCareless Mar 25, 2026
b742813
🔧 chore(deps): update dependency versions
littleCareless Mar 25, 2026
f528b58
Merge remote-tracking branch 'origin/develop' into codex/unify-model-…
littleCareless Mar 25, 2026
464630d
:bug: fix(webview-ui): resolve react-hooks lint errors in settings flows
littleCareless Mar 25, 2026
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
55 changes: 55 additions & 0 deletions .github/workflows/protocol-audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Protocol Audit

on:
pull_request:
branches: ["**"]
workflow_dispatch:

jobs:
protocol-audit:
name: Message Protocol Audit (blocking)
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Set up pnpm
uses: pnpm/action-setup@v3
with:
version: 10.24.0

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Run protocol audit (phase B: blocking)
id: audit
run: |
set -o pipefail
pnpm protocol:check -- --format both | tee protocol-audit.log

- name: Upload protocol audit artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: protocol-audit-report
if-no-files-found: warn
path: |
protocol-audit.log
protocol-audit-report.json

- name: Write workflow summary
if: always()
run: |
echo "## Message Protocol Audit (Phase B)" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "- Mode: blocking (ERROR will fail job)" >> "$GITHUB_STEP_SUMMARY"
echo "- Step outcome: \`${{ steps.audit.outcome }}\`" >> "$GITHUB_STEP_SUMMARY"
echo "- Report artifact: \`protocol-audit-report\`" >> "$GITHUB_STEP_SUMMARY"
95 changes: 79 additions & 16 deletions CHANGELOG.zh-CN.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,38 @@
## 0.59.0 (2026-03-13)
## 0.59.0 (2026-03-25)

### 📦 src 模块

### ✨ Features

- **commit-chat**: add real-time model streaming in webview chat ([2ead424](https://github.com/littleCareless/dish-ai-commit/commit/2ead424))
- **commit**: improve generation resilience and prompt-aware cache ([79f57a1](https://github.com/littleCareless/dish-ai-commit/commit/79f57a1))
- **settings**: add features settings management ([636425a](https://github.com/littleCareless/dish-ai-commit/commit/636425a))
- **ai**: add model registry and catalog sync services ([14f5bc0](https://github.com/littleCareless/dish-ai-commit/commit/14f5bc0))

### 🐛 Bug Fixes

- **webview**: prevent message dedupe drops on page re-entry ([456066f](https://github.com/littleCareless/dish-ai-commit/commit/456066f))
- **commit**: align layered generation config and diff snapshots ([07f9f8a](https://github.com/littleCareless/dish-ai-commit/commit/07f9f8a))

### ♻️ Code Refactoring

- **commands**: return structured execution status ([dc447b7](https://github.com/littleCareless/dish-ai-commit/commit/dc447b7))
- **commit**: remove unused target resources path ([1794064](https://github.com/littleCareless/dish-ai-commit/commit/1794064))
- **ai**: standardize provider logging and runtime diagnostics ([ea17db8](https://github.com/littleCareless/dish-ai-commit/commit/ea17db8))
- **commit**: orchestrate generation flow and unify diff targeting ([58c0c59](https://github.com/littleCareless/dish-ai-commit/commit/58c0c59))
- **core**: remove disconnected orchestration scaffolds ([92cc037](https://github.com/littleCareless/dish-ai-commit/commit/92cc037))
- **core**: remove duplicate services and orphan command implementations ([3ede345](https://github.com/littleCareless/dish-ai-commit/commit/3ede345))

### 🔧 Chores

- branch 'feat-commit-chat-real-streaming' into develop ([6b5467a](https://github.com/littleCareless/dish-ai-commit/commit/6b5467a))
- branch 'chore/save-current-changes-20260301' into develop ([f6e1bc1](https://github.com/littleCareless/dish-ai-commit/commit/f6e1bc1))
- **chore**: save current local changes ([804ae6a](https://github.com/littleCareless/dish-ai-commit/commit/804ae6a))
- **commit-chat**: type input handlers for strict ts checks ([446e3c7](https://github.com/littleCareless/dish-ai-commit/commit/446e3c7))
- **scm**: harden multi-repo boundaries and provider routing ([41459a6](https://github.com/littleCareless/dish-ai-commit/commit/41459a6))
- **fix**: isolate git/svn cache keys for prompts and commit cache ([beb63fa](https://github.com/littleCareless/dish-ai-commit/commit/beb63fa))
- **chore**: checkpoint current changes ([f2bd596](https://github.com/littleCareless/dish-ai-commit/commit/f2bd596))
- **commit**: complete generation result typing ([197cb45](https://github.com/littleCareless/dish-ai-commit/commit/197cb45))
- **protocol**: add audit workflow and align webview messaging ([54f0cc8](https://github.com/littleCareless/dish-ai-commit/commit/54f0cc8))
- **scm**: unify critical-path logging/menu and publish verification artifacts ([dc2bb3b](https://github.com/littleCareless/dish-ai-commit/commit/dc2bb3b))
- **commit**: dedup generation pipeline and enable cross-repo routing ([b9704d9](https://github.com/littleCareless/dish-ai-commit/commit/b9704d9))
- **ui**: resolve TypeScript errors in settings components ([6b773d8](https://github.com/littleCareless/dish-ai-commit/commit/6b773d8))
- **ui**: unify command palette and welcome page ([2904def](https://github.com/littleCareless/dish-ai-commit/commit/2904def))
- **style**: 添加最小宽度以防止内容被压缩 ([0d398ac](https://github.com/littleCareless/dish-ai-commit/commit/0d398ac))
- v0.58.2 ([1976014](https://github.com/littleCareless/dish-ai-commit/commit/1976014))
- **ci**: improve release workflow changelog parsing and URL output ([2bc78ea](https://github.com/littleCareless/dish-ai-commit/commit/2bc78ea))
Expand All @@ -20,28 +41,70 @@

### ✨ Features

- **commit-chat**: add real-time model streaming in webview chat ([2ead424](https://github.com/littleCareless/dish-ai-commit/commit/2ead424))
- **commit**: improve generation resilience and prompt-aware cache ([79f57a1](https://github.com/littleCareless/dish-ai-commit/commit/79f57a1))
- **settings**: add features settings management ([636425a](https://github.com/littleCareless/dish-ai-commit/commit/636425a))
- **ai**: add model registry and catalog sync services ([14f5bc0](https://github.com/littleCareless/dish-ai-commit/commit/14f5bc0))

### 🐛 Bug Fixes

- **webview**: prevent message dedupe drops on page re-entry ([456066f](https://github.com/littleCareless/dish-ai-commit/commit/456066f))
- **commit**: align layered generation config and diff snapshots ([07f9f8a](https://github.com/littleCareless/dish-ai-commit/commit/07f9f8a))

### ♻️ Code Refactoring

- **commands**: return structured execution status ([dc447b7](https://github.com/littleCareless/dish-ai-commit/commit/dc447b7))
- **commit**: remove unused target resources path ([1794064](https://github.com/littleCareless/dish-ai-commit/commit/1794064))
- **ai**: standardize provider logging and runtime diagnostics ([ea17db8](https://github.com/littleCareless/dish-ai-commit/commit/ea17db8))
- **commit**: orchestrate generation flow and unify diff targeting ([58c0c59](https://github.com/littleCareless/dish-ai-commit/commit/58c0c59))
- **core**: remove disconnected orchestration scaffolds ([92cc037](https://github.com/littleCareless/dish-ai-commit/commit/92cc037))
- **core**: remove duplicate services and orphan command implementations ([3ede345](https://github.com/littleCareless/dish-ai-commit/commit/3ede345))

### 🔧 Chores

- branch 'feat-commit-chat-real-streaming' into develop ([6b5467a](https://github.com/littleCareless/dish-ai-commit/commit/6b5467a))
- branch 'chore/save-current-changes-20260301' into develop ([f6e1bc1](https://github.com/littleCareless/dish-ai-commit/commit/f6e1bc1))
- **chore**: save current local changes ([804ae6a](https://github.com/littleCareless/dish-ai-commit/commit/804ae6a))
- **commit-chat**: type input handlers for strict ts checks ([446e3c7](https://github.com/littleCareless/dish-ai-commit/commit/446e3c7))
- **scm**: harden multi-repo boundaries and provider routing ([41459a6](https://github.com/littleCareless/dish-ai-commit/commit/41459a6))
- **fix**: isolate git/svn cache keys for prompts and commit cache ([beb63fa](https://github.com/littleCareless/dish-ai-commit/commit/beb63fa))
- **chore**: checkpoint current changes ([f2bd596](https://github.com/littleCareless/dish-ai-commit/commit/f2bd596))
- **commit**: complete generation result typing ([197cb45](https://github.com/littleCareless/dish-ai-commit/commit/197cb45))
- **protocol**: add audit workflow and align webview messaging ([54f0cc8](https://github.com/littleCareless/dish-ai-commit/commit/54f0cc8))
- **scm**: unify critical-path logging/menu and publish verification artifacts ([dc2bb3b](https://github.com/littleCareless/dish-ai-commit/commit/dc2bb3b))
- **commit**: dedup generation pipeline and enable cross-repo routing ([b9704d9](https://github.com/littleCareless/dish-ai-commit/commit/b9704d9))
- **ui**: resolve TypeScript errors in settings components ([6b773d8](https://github.com/littleCareless/dish-ai-commit/commit/6b773d8))
- **ui**: unify command palette and welcome page ([2904def](https://github.com/littleCareless/dish-ai-commit/commit/2904def))
- **style**: 添加最小宽度以防止内容被压缩 ([0d398ac](https://github.com/littleCareless/dish-ai-commit/commit/0d398ac))
- v0.58.2 ([1976014](https://github.com/littleCareless/dish-ai-commit/commit/1976014))
- **ci**: improve release workflow changelog parsing and URL output ([2bc78ea](https://github.com/littleCareless/dish-ai-commit/commit/2bc78ea))

### ✨ Features

- **commit-chat**: add real-time model streaming in webview chat ([2ead424](https://github.com/littleCareless/dish-ai-commit/commit/2ead424))
- **commit**: improve generation resilience and prompt-aware cache ([79f57a1](https://github.com/littleCareless/dish-ai-commit/commit/79f57a1))
- **settings**: add features settings management ([636425a](https://github.com/littleCareless/dish-ai-commit/commit/636425a))
- **ai**: add model registry and catalog sync services ([14f5bc0](https://github.com/littleCareless/dish-ai-commit/commit/14f5bc0))

### 🐛 Bug Fixes

- **webview**: prevent message dedupe drops on page re-entry ([456066f](https://github.com/littleCareless/dish-ai-commit/commit/456066f))
- **commit**: align layered generation config and diff snapshots ([07f9f8a](https://github.com/littleCareless/dish-ai-commit/commit/07f9f8a))

### ♻️ Code Refactoring

- **commands**: return structured execution status ([dc447b7](https://github.com/littleCareless/dish-ai-commit/commit/dc447b7))
- **commit**: remove unused target resources path ([1794064](https://github.com/littleCareless/dish-ai-commit/commit/1794064))
- **ai**: standardize provider logging and runtime diagnostics ([ea17db8](https://github.com/littleCareless/dish-ai-commit/commit/ea17db8))
- **commit**: orchestrate generation flow and unify diff targeting ([58c0c59](https://github.com/littleCareless/dish-ai-commit/commit/58c0c59))
- **core**: remove disconnected orchestration scaffolds ([92cc037](https://github.com/littleCareless/dish-ai-commit/commit/92cc037))
- **core**: remove duplicate services and orphan command implementations ([3ede345](https://github.com/littleCareless/dish-ai-commit/commit/3ede345))

### 🔧 Chores

- branch 'feat-commit-chat-real-streaming' into develop ([6b5467a](https://github.com/littleCareless/dish-ai-commit/commit/6b5467a))
- branch 'chore/save-current-changes-20260301' into develop ([f6e1bc1](https://github.com/littleCareless/dish-ai-commit/commit/f6e1bc1))
- **chore**: save current local changes ([804ae6a](https://github.com/littleCareless/dish-ai-commit/commit/804ae6a))
- **commit-chat**: type input handlers for strict ts checks ([446e3c7](https://github.com/littleCareless/dish-ai-commit/commit/446e3c7))
- **scm**: harden multi-repo boundaries and provider routing ([41459a6](https://github.com/littleCareless/dish-ai-commit/commit/41459a6))
- **fix**: isolate git/svn cache keys for prompts and commit cache ([beb63fa](https://github.com/littleCareless/dish-ai-commit/commit/beb63fa))
- **chore**: checkpoint current changes ([f2bd596](https://github.com/littleCareless/dish-ai-commit/commit/f2bd596))
- **commit**: complete generation result typing ([197cb45](https://github.com/littleCareless/dish-ai-commit/commit/197cb45))
- **protocol**: add audit workflow and align webview messaging ([54f0cc8](https://github.com/littleCareless/dish-ai-commit/commit/54f0cc8))
- **scm**: unify critical-path logging/menu and publish verification artifacts ([dc2bb3b](https://github.com/littleCareless/dish-ai-commit/commit/dc2bb3b))
- **commit**: dedup generation pipeline and enable cross-repo routing ([b9704d9](https://github.com/littleCareless/dish-ai-commit/commit/b9704d9))
- **ui**: resolve TypeScript errors in settings components ([6b773d8](https://github.com/littleCareless/dish-ai-commit/commit/6b773d8))
- **ui**: unify command palette and welcome page ([2904def](https://github.com/littleCareless/dish-ai-commit/commit/2904def))
- **style**: 添加最小宽度以防止内容被压缩 ([0d398ac](https://github.com/littleCareless/dish-ai-commit/commit/0d398ac))
- v0.58.2 ([1976014](https://github.com/littleCareless/dish-ai-commit/commit/1976014))
- **ci**: improve release workflow changelog parsing and URL output ([2bc78ea](https://github.com/littleCareless/dish-ai-commit/commit/2bc78ea))
10 changes: 10 additions & 0 deletions REFACTOR_PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,14 @@
- 创建进度跟踪文档
- 准备开始执行重构

### 2026-03-24 - 方案收敛(本轮瘦身)

- 主链未接入的编排层 scaffold 已删除:
- `src/services/core/commit-generation-coordinator.ts`
- `src/core/generation-orchestrator.ts`
- `src/core/generation-transaction.ts`
- `src/core/generation-gate.ts`
- `StreamingGenerationHelper` 中未使用的 `GenerationGate` 引用已移除。
- 本文件保留为历史记录,不再作为进行中任务清单。

---
58 changes: 58 additions & 0 deletions docs/refactor-generation-pipeline-dedup-baseline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Generation Pipeline Dedup Baseline (Pre-change)

Date: 2026-03-24
Change: `refactor-generation-pipeline-dedup`

## Scope

Critical path before refactor:

- `src/commands/base-command.ts`
- `src/commands/generate-commit/generate-commit-command.ts`
- `src/commands/generate-commit/handlers/cross-repository-handler.ts`
- `src/scm/multi-repository-context-manager.ts`
- `src/scm/scm-provider.ts`

## Baseline Metrics

1. SCM detection calls in single-repository commit path: **2**

- First detection in `prepare()` via `resolveSCMContext()`.
- Second detection in `GenerateCommitCommand.handleSingleRepositoryScenario()`.

2. Model validation calls in commit path: **1 required + 1 fallback path**

- Required call in `BaseCommand.initializeAIContext()`.
- Fallback call exists in `StreamingGenerationHelper.processModelConfiguration()` when pre-initialized provider/model are missing.

3. Cross-repository reachability: **Not reachable**

- `isCrossRepository` is hardcoded to `false` in `GenerateCommitCommand.parseArguments()`.

4. `console.*` usage in commit/SCM critical files: **54**

- `src/scm/scm-provider.ts`
- `src/scm/multi-repository-context-manager.ts`
- `src/commands/generate-commit/generate-commit-command.ts`

5. Orphan command implementation files (present but unregistered): **3**

- `src/commands/select-model-command.ts`
- `src/commands/show-token-stats-command.ts`
- `src/commands/reset-token-stats-command.ts`

## Evidence Commands

```bash
rg -n "resolveSCMContext\(|detectSCMProvider\(|SCMFactory\.detectSCM\(" \
src/commands/base-command.ts src/commands/generate-commit/generate-commit-command.ts

rg -n "ModelValidationService\.validateModel\(|initializeAIContext\(|processModelConfiguration\(" \
src/commands/base-command.ts src/commands/generate-commit/utils/streaming-generation-helper.ts

rg -n "isCrossRepository = false|groupFilesByRepository|CrossRepositoryHandler" \
src/commands/generate-commit/generate-commit-command.ts src/commands/generate-commit/handlers/cross-repository-handler.ts

rg -n "console\.(log|warn|error|info|debug)" \
src/scm/scm-provider.ts src/scm/multi-repository-context-manager.ts src/commands/generate-commit/generate-commit-command.ts | wc -l
```
36 changes: 36 additions & 0 deletions docs/refactor-generation-pipeline-dedup-decisions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Generation Pipeline Dedup Decisions

Date: 2026-03-24
Change: `refactor-generation-pipeline-dedup`

## Canonical Paths

- SCM detection: `src/services/core/scm-detector-service.ts`
- Model picker: `src/services/core/model-picker-service.ts`
- Token statistics: `src/services/core/token-stats-service.ts`
- Error handling: `src/services/error-handling/*`
- Code review report generator: `src/services/reporting/code-review-report-generator.ts`

## Removed in This Refactor

- `src/services/scm-detector-service.ts`
- `src/services/model-picker-service.ts`
- `src/services/token-stats-service.ts`
- `src/services/error-classification.ts`
- `src/services/error-context.ts`
- `src/services/error-translation.ts`
- `src/services/enhanced-error-handler.ts`
- `src/services/code-review-report-generator.ts`
- `src/commands/select-model-command.ts`
- `src/commands/show-token-stats-command.ts`
- `src/commands/reset-token-stats-command.ts`
- `src/services/core/commit-generation-coordinator.ts`
- `src/core/generation-orchestrator.ts`
- `src/core/generation-transaction.ts`
- `src/core/generation-gate.ts`

## No-Gray-Area Rule Applied

Each disconnected key module now has an explicit status:

- Removed now.
Loading
Loading