ai-changelog-generator-extension 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/launch.json +41 -0
- package/.vscode/settings.json +15 -0
- package/.vscode/tasks.json +26 -0
- package/.vscodeignore +62 -0
- package/ARCHITECTURE-v0.4.0.md +418 -0
- package/CHANGELOG.md +28 -0
- package/DEVELOPMENT.md +266 -0
- package/IMPLEMENTATION_SUMMARY.md +240 -0
- package/IMPLEMENTATION_SUMMARY_v0.4.0.md +239 -0
- package/LICENSE +21 -0
- package/MIGRATION_CHECKLIST.md +200 -0
- package/QUICK-REFERENCE-v0.4.0.md +251 -0
- package/QUICK-START.md +211 -0
- package/README.md +95 -0
- package/RELEASE-NOTES-0.2.0.md +176 -0
- package/RELEASE-NOTES-0.3.0.md +275 -0
- package/RELEASE-NOTES-0.4.0.md +194 -0
- package/SETTINGS-GUIDE.md +418 -0
- package/TESTING-v0.4.0.md +263 -0
- package/TESTING.md +255 -0
- package/esbuild.js +54 -0
- package/package.json +282 -0
- package/setup.sh +58 -0
- package/src/commands/configureProvider.ts +28 -0
- package/src/commands/setupWizard.ts +333 -0
- package/src/commands/testConnection.ts +93 -0
- package/src/extension.ts +264 -0
- package/src/services/EnvFileService.ts +172 -0
- package/src/services/ExtensionConfigurationManager.ts +224 -0
- package/src/services/StatusService.ts +211 -0
- package/src/types/core.d.ts +85 -0
- package/src/views/CommitSidebarProvider.ts +572 -0
- package/src/views/OnboardingPanelProvider.ts +1366 -0
- package/src/views/ReleaseSidebarProvider.ts +370 -0
- package/src/views/SettingsPanelProvider.ts +991 -0
- package/test-package.sh +38 -0
- package/tsconfig.json +18 -0
- package/v0.4.0-COMPLETE.md +349 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Run Extension",
|
|
6
|
+
"type": "extensionHost",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"args": [
|
|
9
|
+
"--extensionDevelopmentPath=${workspaceFolder}"
|
|
10
|
+
],
|
|
11
|
+
"outFiles": [
|
|
12
|
+
"${workspaceFolder}/out/**/*.js"
|
|
13
|
+
],
|
|
14
|
+
"preLaunchTask": "${defaultBuildTask}"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "Run Extension (No Build)",
|
|
18
|
+
"type": "extensionHost",
|
|
19
|
+
"request": "launch",
|
|
20
|
+
"args": [
|
|
21
|
+
"--extensionDevelopmentPath=${workspaceFolder}"
|
|
22
|
+
],
|
|
23
|
+
"outFiles": [
|
|
24
|
+
"${workspaceFolder}/out/**/*.js"
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "Extension Tests",
|
|
29
|
+
"type": "extensionHost",
|
|
30
|
+
"request": "launch",
|
|
31
|
+
"args": [
|
|
32
|
+
"--extensionDevelopmentPath=${workspaceFolder}",
|
|
33
|
+
"--extensionTestsPath=${workspaceFolder}/out/test/suite/index"
|
|
34
|
+
],
|
|
35
|
+
"outFiles": [
|
|
36
|
+
"${workspaceFolder}/out/test/**/*.js"
|
|
37
|
+
],
|
|
38
|
+
"preLaunchTask": "${defaultBuildTask}"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"editor.formatOnSave": true,
|
|
3
|
+
"editor.codeActionsOnSave": {
|
|
4
|
+
"source.fixAll.eslint": "explicit"
|
|
5
|
+
},
|
|
6
|
+
"typescript.tsdk": "node_modules/typescript/lib",
|
|
7
|
+
"files.exclude": {
|
|
8
|
+
"out": false,
|
|
9
|
+
"node_modules": true
|
|
10
|
+
},
|
|
11
|
+
"search.exclude": {
|
|
12
|
+
"out": true,
|
|
13
|
+
"node_modules": true
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "2.0.0",
|
|
3
|
+
"tasks": [
|
|
4
|
+
{
|
|
5
|
+
"type": "npm",
|
|
6
|
+
"script": "watch",
|
|
7
|
+
"problemMatcher": "$tsc-watch",
|
|
8
|
+
"isBackground": true,
|
|
9
|
+
"presentation": {
|
|
10
|
+
"reveal": "never"
|
|
11
|
+
},
|
|
12
|
+
"group": {
|
|
13
|
+
"kind": "build",
|
|
14
|
+
"isDefault": true
|
|
15
|
+
},
|
|
16
|
+
"label": "npm: watch"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type": "npm",
|
|
20
|
+
"script": "compile",
|
|
21
|
+
"problemMatcher": "$tsc",
|
|
22
|
+
"group": "build",
|
|
23
|
+
"label": "npm: compile"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
package/.vscodeignore
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# VS Code Extension packaging ignore file
|
|
2
|
+
|
|
3
|
+
# Parent directory files
|
|
4
|
+
../**
|
|
5
|
+
**/vitest.config.js
|
|
6
|
+
|
|
7
|
+
# Build artifacts
|
|
8
|
+
.vscode-test/**
|
|
9
|
+
.vscode-test-web/**
|
|
10
|
+
out/test/**
|
|
11
|
+
|
|
12
|
+
# Development files
|
|
13
|
+
.vscode/**
|
|
14
|
+
.vscode-test/**
|
|
15
|
+
src/**
|
|
16
|
+
tsconfig.json
|
|
17
|
+
setup.sh
|
|
18
|
+
*.sh
|
|
19
|
+
|
|
20
|
+
# Documentation (keep some, remove dev docs)
|
|
21
|
+
DEVELOPMENT.md
|
|
22
|
+
IMPLEMENTATION_SUMMARY.md
|
|
23
|
+
MIGRATION_CHECKLIST.md
|
|
24
|
+
|
|
25
|
+
# Git
|
|
26
|
+
.git
|
|
27
|
+
.gitignore
|
|
28
|
+
.gitattributes
|
|
29
|
+
|
|
30
|
+
# Node - Keep dependencies but exclude dev dependencies
|
|
31
|
+
node_modules/**/test/**
|
|
32
|
+
node_modules/**/tests/**
|
|
33
|
+
node_modules/**/*.md
|
|
34
|
+
node_modules/**/.editorconfig
|
|
35
|
+
node_modules/**/.eslintrc*
|
|
36
|
+
node_modules/**/LICENSE
|
|
37
|
+
node_modules/**/CHANGELOG*
|
|
38
|
+
!node_modules/@entro314labs/**
|
|
39
|
+
|
|
40
|
+
# Logs
|
|
41
|
+
*.log
|
|
42
|
+
npm-debug.log*
|
|
43
|
+
|
|
44
|
+
# OS files
|
|
45
|
+
.DS_Store
|
|
46
|
+
Thumbs.db
|
|
47
|
+
|
|
48
|
+
# Testing
|
|
49
|
+
**/*.test.ts
|
|
50
|
+
**/*.test.js
|
|
51
|
+
test/**
|
|
52
|
+
coverage/**
|
|
53
|
+
|
|
54
|
+
# Config files
|
|
55
|
+
.eslintrc*
|
|
56
|
+
.prettierrc*
|
|
57
|
+
.editorconfig
|
|
58
|
+
|
|
59
|
+
# Misc
|
|
60
|
+
*.vsix
|
|
61
|
+
.env
|
|
62
|
+
.env.local
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
# v0.4.0 Architecture Overview
|
|
2
|
+
|
|
3
|
+
## Component Architecture
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ VSCode Extension │
|
|
8
|
+
├─────────────────────────────────────────────────────────────┤
|
|
9
|
+
│ │
|
|
10
|
+
│ ┌─────────────────────────────────────────────────────┐ │
|
|
11
|
+
│ │ extension.ts (Main) │ │
|
|
12
|
+
│ │ • Activation logic │ │
|
|
13
|
+
│ │ • First-run detection │ │
|
|
14
|
+
│ │ • Command registration │ │
|
|
15
|
+
│ └──────────┬──────────────────────────────────────────┘ │
|
|
16
|
+
│ │ │
|
|
17
|
+
│ ├─────────────┬──────────────┬─────────────┐ │
|
|
18
|
+
│ ▼ ▼ ▼ ▼ │
|
|
19
|
+
│ ┌──────────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐│
|
|
20
|
+
│ │ Onboarding │ │ Settings │ │ Commit │ │Release ││
|
|
21
|
+
│ │ Panel │ │ Panel │ │ Sidebar │ │Sidebar ││
|
|
22
|
+
│ │ Provider │ │ Provider │ │ Provider │ │Provider ││
|
|
23
|
+
│ │ │ │ │ │ │ │ ││
|
|
24
|
+
│ │ (NEW v0.4) │ │(existing)│ │(existing)│ │(existing││
|
|
25
|
+
│ └──────┬───────┘ └────┬─────┘ └────┬─────┘ └────┬────┘│
|
|
26
|
+
│ │ │ │ │ │
|
|
27
|
+
│ │ └─────────────┴─────────────┘ │
|
|
28
|
+
│ │ │ │
|
|
29
|
+
│ └───────────────────────────┼──────────────────────┤
|
|
30
|
+
│ ▼ │
|
|
31
|
+
│ ┌────────────────────────────────────┐ │
|
|
32
|
+
│ │ Configuration & Services │ │
|
|
33
|
+
│ ├────────────────────────────────────┤ │
|
|
34
|
+
│ │ • ExtensionConfigurationManager │ │
|
|
35
|
+
│ │ • StatusService │ │
|
|
36
|
+
│ │ • EnvFileService │ │
|
|
37
|
+
│ │ • Core AI Changelog Package │ │
|
|
38
|
+
│ └────────────────────────────────────┘ │
|
|
39
|
+
│ │
|
|
40
|
+
└─────────────────────────────────────────────────────────────┘
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Onboarding Flow
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Installation
|
|
47
|
+
│
|
|
48
|
+
▼
|
|
49
|
+
First Activation
|
|
50
|
+
│
|
|
51
|
+
▼
|
|
52
|
+
Setup Complete? ──No──► Open Onboarding Panel ──────┐
|
|
53
|
+
│ │ │
|
|
54
|
+
Yes │ │
|
|
55
|
+
│ ▼ │
|
|
56
|
+
│ ┌──────────────┐ │
|
|
57
|
+
│ │ Step 1: │ │
|
|
58
|
+
│ │ Storage │ │
|
|
59
|
+
│ │ Selection │ │
|
|
60
|
+
│ └──────┬───────┘ │
|
|
61
|
+
│ │ │
|
|
62
|
+
│ ▼ │
|
|
63
|
+
│ ┌──────────────┐ │
|
|
64
|
+
│ │ Step 2: │ │
|
|
65
|
+
│ │ Provider │ │
|
|
66
|
+
│ │ Selection │ │
|
|
67
|
+
│ └──────┬───────┘ │
|
|
68
|
+
│ │ │
|
|
69
|
+
│ ▼ │
|
|
70
|
+
│ ┌──────────────┐ │
|
|
71
|
+
│ │ Step 3: │ │
|
|
72
|
+
│ │ API │ │
|
|
73
|
+
│ │ Configure │ │
|
|
74
|
+
│ └──────┬───────┘ │
|
|
75
|
+
│ │ │
|
|
76
|
+
│ ▼ │
|
|
77
|
+
│ ┌──────────────┐ │
|
|
78
|
+
│ │ Step 4: │ │
|
|
79
|
+
│ │ Review & │ │
|
|
80
|
+
│ │ Complete │ │
|
|
81
|
+
│ └──────┬───────┘ │
|
|
82
|
+
│ │ │
|
|
83
|
+
│ ▼ │
|
|
84
|
+
│ Save Configuration │
|
|
85
|
+
│ │ │
|
|
86
|
+
│ ▼ │
|
|
87
|
+
│ Set setupCompleted = true │
|
|
88
|
+
│ │ │
|
|
89
|
+
└──────────────────────────┴─────────────────────┤
|
|
90
|
+
│ │
|
|
91
|
+
▼ │
|
|
92
|
+
Extension Ready │
|
|
93
|
+
│ │
|
|
94
|
+
┌──────────┴──────────┐ │
|
|
95
|
+
▼ ▼ │
|
|
96
|
+
Commit View Release View │
|
|
97
|
+
│
|
|
98
|
+
Skip ────────────┘
|
|
99
|
+
Setup
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Message Flow (Onboarding ↔ Extension)
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
┌─────────────────┐ ┌──────────────────────┐
|
|
106
|
+
│ Webview UI │ │ Extension Host │
|
|
107
|
+
│ (JavaScript) │ │ (TypeScript) │
|
|
108
|
+
└────────┬────────┘ └──────────┬───────────┘
|
|
109
|
+
│ │
|
|
110
|
+
│ 1. User clicks "Test Storage" │
|
|
111
|
+
├──────────────────────────────────────►│
|
|
112
|
+
│ { type: 'testStorageMode', │
|
|
113
|
+
│ mode: 'secrets' } │
|
|
114
|
+
│ │
|
|
115
|
+
│ Validate │
|
|
116
|
+
│ Storage ◄──────┤
|
|
117
|
+
│ │
|
|
118
|
+
│ 2. Validation result │
|
|
119
|
+
│◄──────────────────────────────────────┤
|
|
120
|
+
│ { type: 'validationResult', │
|
|
121
|
+
│ step: 'storage', │
|
|
122
|
+
│ success: true, │
|
|
123
|
+
│ message: '✅ ...' } │
|
|
124
|
+
│ │
|
|
125
|
+
│ 3. Show feedback to user │
|
|
126
|
+
├─► Display green message │
|
|
127
|
+
│ │
|
|
128
|
+
│ 4. User completes all steps │
|
|
129
|
+
├──────────────────────────────────────►│
|
|
130
|
+
│ { type: 'saveConfiguration', │
|
|
131
|
+
│ config: {...} } │
|
|
132
|
+
│ │
|
|
133
|
+
│ Save to │
|
|
134
|
+
│ VSCode ◄───────┤
|
|
135
|
+
│ Settings │
|
|
136
|
+
│ │
|
|
137
|
+
│ 5. Save complete │
|
|
138
|
+
│◄──────────────────────────────────────┤
|
|
139
|
+
│ { type: 'saveComplete', │
|
|
140
|
+
│ success: true } │
|
|
141
|
+
│ │
|
|
142
|
+
│ 6. Close panel after 2s │
|
|
143
|
+
├─► Auto-close │
|
|
144
|
+
│ │
|
|
145
|
+
└────────────────────────────────────────┘
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Data Flow
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
152
|
+
│ User Input │
|
|
153
|
+
└─────────────────┬───────────────────────────────────────────┘
|
|
154
|
+
│
|
|
155
|
+
▼
|
|
156
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
157
|
+
│ Webview State (JavaScript) │
|
|
158
|
+
│ • config.storageMode │
|
|
159
|
+
│ • config.provider │
|
|
160
|
+
│ • config.apiKey │
|
|
161
|
+
│ • config.model │
|
|
162
|
+
│ • config.azureEndpoint │
|
|
163
|
+
│ • config.ollamaHost │
|
|
164
|
+
└─────────────────┬───────────────────────────────────────────┘
|
|
165
|
+
│
|
|
166
|
+
▼
|
|
167
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
168
|
+
│ Message to Extension (postMessage) │
|
|
169
|
+
└─────────────────┬───────────────────────────────────────────┘
|
|
170
|
+
│
|
|
171
|
+
▼
|
|
172
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
173
|
+
│ OnboardingPanelProvider (TypeScript) │
|
|
174
|
+
│ • _testStorageMode() │
|
|
175
|
+
│ • _testProvider() │
|
|
176
|
+
│ • _testApiKey() │
|
|
177
|
+
│ • _saveConfiguration() │
|
|
178
|
+
└─────────────────┬───────────────────────────────────────────┘
|
|
179
|
+
│
|
|
180
|
+
├─────────────┬─────────────┬────────────┐
|
|
181
|
+
▼ ▼ ▼ ▼
|
|
182
|
+
┌──────────────────┐ ┌──────────┐ ┌─────────┐ ┌────────┐
|
|
183
|
+
│ Configuration │ │ Status │ │ Env │ │VSCode │
|
|
184
|
+
│ Manager │ │ Service │ │ Service │ │Settings│
|
|
185
|
+
└──────────────────┘ └──────────┘ └─────────┘ └────────┘
|
|
186
|
+
│ │ │ │
|
|
187
|
+
└─────────────────┴────────────┴────────────┘
|
|
188
|
+
│
|
|
189
|
+
▼
|
|
190
|
+
┌──────────────────────────┐
|
|
191
|
+
│ VSCode Secure Storage │
|
|
192
|
+
│ or .env file │
|
|
193
|
+
│ or settings.json │
|
|
194
|
+
└──────────────────────────┘
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## State Management
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
Step State:
|
|
201
|
+
┌─────────────────────────────────────────┐
|
|
202
|
+
│ currentStep: 1, 2, 3, or 4 │
|
|
203
|
+
│ config: { │
|
|
204
|
+
│ storageMode: 'secrets'|'env'|'...' │
|
|
205
|
+
│ provider: 'openai'|'anthropic'|'...' │
|
|
206
|
+
│ apiKey: string │
|
|
207
|
+
│ model: string (optional) │
|
|
208
|
+
│ azureEndpoint: string (if Azure) │
|
|
209
|
+
│ ollamaHost: string (if Ollama) │
|
|
210
|
+
│ ... │
|
|
211
|
+
│ } │
|
|
212
|
+
└─────────────────────────────────────────┘
|
|
213
|
+
|
|
214
|
+
Validation State (per field):
|
|
215
|
+
┌─────────────────────────────────────────┐
|
|
216
|
+
│ success: true | false | null │
|
|
217
|
+
│ message: string │
|
|
218
|
+
│ visible: boolean │
|
|
219
|
+
│ type: 'success'|'error'|'loading' │
|
|
220
|
+
└─────────────────────────────────────────┘
|
|
221
|
+
|
|
222
|
+
UI State:
|
|
223
|
+
┌─────────────────────────────────────────┐
|
|
224
|
+
│ Progress: (step - 1) / 3 * 100% │
|
|
225
|
+
│ Step indicators: completed|active|future│
|
|
226
|
+
│ Active step visibility: block|none │
|
|
227
|
+
│ Button states: enabled|disabled │
|
|
228
|
+
│ Provider fields: show|hide │
|
|
229
|
+
└─────────────────────────────────────────┘
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Validation Architecture
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
User Action
|
|
236
|
+
│
|
|
237
|
+
▼
|
|
238
|
+
┌────────────────────────┐
|
|
239
|
+
│ Test Button Clicked │
|
|
240
|
+
└──────────┬─────────────┘
|
|
241
|
+
│
|
|
242
|
+
▼
|
|
243
|
+
┌────────────────────────┐
|
|
244
|
+
│ Show Loading State │ ← Immediate UI feedback
|
|
245
|
+
└──────────┬─────────────┘
|
|
246
|
+
│
|
|
247
|
+
▼
|
|
248
|
+
┌────────────────────────┐
|
|
249
|
+
│ Post Message to │
|
|
250
|
+
│ Extension │
|
|
251
|
+
└──────────┬─────────────┘
|
|
252
|
+
│
|
|
253
|
+
▼
|
|
254
|
+
┌────────────────────────┐
|
|
255
|
+
│ Extension Receives │
|
|
256
|
+
│ Message │
|
|
257
|
+
└──────────┬─────────────┘
|
|
258
|
+
│
|
|
259
|
+
▼
|
|
260
|
+
┌────────────────────────┐
|
|
261
|
+
│ Call Validation │
|
|
262
|
+
│ Service │
|
|
263
|
+
│ • EnvFileService │
|
|
264
|
+
│ • ConfigManager │
|
|
265
|
+
│ • Fetch API │
|
|
266
|
+
└──────────┬─────────────┘
|
|
267
|
+
│
|
|
268
|
+
├──Success────┐
|
|
269
|
+
│ │
|
|
270
|
+
▼ ▼
|
|
271
|
+
┌──────────┐ ┌──────────┐
|
|
272
|
+
│ Error │ │ Success │
|
|
273
|
+
└────┬─────┘ └────┬─────┘
|
|
274
|
+
│ │
|
|
275
|
+
└──────┬───────┘
|
|
276
|
+
│
|
|
277
|
+
▼
|
|
278
|
+
┌────────────────────────┐
|
|
279
|
+
│ Send Result to │
|
|
280
|
+
│ Webview │
|
|
281
|
+
└──────────┬─────────────┘
|
|
282
|
+
│
|
|
283
|
+
▼
|
|
284
|
+
┌────────────────────────┐
|
|
285
|
+
│ Show Success/Error │
|
|
286
|
+
│ Message │
|
|
287
|
+
└────────────────────────┘
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## File Organization
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
vscode-extension/
|
|
294
|
+
├── src/
|
|
295
|
+
│ ├── extension.ts ← Entry point, registers providers
|
|
296
|
+
│ ├── views/
|
|
297
|
+
│ │ ├── OnboardingPanelProvider.ts ← NEW v0.4.0 (520 lines)
|
|
298
|
+
│ │ ├── SettingsPanelProvider.ts ← Existing (unchanged)
|
|
299
|
+
│ │ ├── CommitSidebarProvider.ts ← Existing
|
|
300
|
+
│ │ └── ReleaseSidebarProvider.ts ← Existing
|
|
301
|
+
│ ├── services/
|
|
302
|
+
│ │ ├── ExtensionConfigurationManager.ts
|
|
303
|
+
│ │ ├── StatusService.ts
|
|
304
|
+
│ │ └── EnvFileService.ts
|
|
305
|
+
│ └── commands/
|
|
306
|
+
│ ├── setupWizard.ts ← Still used by CLI mode
|
|
307
|
+
│ ├── testConnection.ts
|
|
308
|
+
│ └── configureProvider.ts
|
|
309
|
+
├── out/ ← Compiled JavaScript
|
|
310
|
+
└── package.json ← Extension manifest
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Component Responsibilities
|
|
314
|
+
|
|
315
|
+
### OnboardingPanelProvider (NEW)
|
|
316
|
+
**Responsibilities:**
|
|
317
|
+
- Render full-screen onboarding UI
|
|
318
|
+
- Handle user interactions (clicks, inputs)
|
|
319
|
+
- Validate each step
|
|
320
|
+
- Communicate with extension host
|
|
321
|
+
- Manage wizard state
|
|
322
|
+
- Show success/error feedback
|
|
323
|
+
|
|
324
|
+
**Does NOT:**
|
|
325
|
+
- Store configuration directly
|
|
326
|
+
- Make API calls (delegates to services)
|
|
327
|
+
- Manage global extension state
|
|
328
|
+
|
|
329
|
+
### ExtensionConfigurationManager
|
|
330
|
+
**Responsibilities:**
|
|
331
|
+
- Load/save VSCode settings
|
|
332
|
+
- Store/retrieve API keys from secure storage
|
|
333
|
+
- Check if setup is complete
|
|
334
|
+
- Initialize core AI package
|
|
335
|
+
|
|
336
|
+
**Used By:**
|
|
337
|
+
- OnboardingPanelProvider
|
|
338
|
+
- SettingsPanelProvider
|
|
339
|
+
- All other providers
|
|
340
|
+
|
|
341
|
+
### StatusService
|
|
342
|
+
**Responsibilities:**
|
|
343
|
+
- Log extension activity
|
|
344
|
+
- Show status bar item
|
|
345
|
+
- Display status reports
|
|
346
|
+
- Manage output channel
|
|
347
|
+
|
|
348
|
+
**Updated By:**
|
|
349
|
+
- OnboardingPanelProvider (logs validation)
|
|
350
|
+
- All other components
|
|
351
|
+
|
|
352
|
+
### EnvFileService
|
|
353
|
+
**Responsibilities:**
|
|
354
|
+
- Detect .env files in workspace
|
|
355
|
+
- Parse environment variables
|
|
356
|
+
- Extract API keys
|
|
357
|
+
|
|
358
|
+
**Called By:**
|
|
359
|
+
- OnboardingPanelProvider (when testing storage mode)
|
|
360
|
+
- Extension activation (auto-detect)
|
|
361
|
+
|
|
362
|
+
## Why This Architecture?
|
|
363
|
+
|
|
364
|
+
### Separation of Concerns
|
|
365
|
+
- ✅ UI logic in webview (HTML/CSS/JS)
|
|
366
|
+
- ✅ Business logic in TypeScript (providers)
|
|
367
|
+
- ✅ Data persistence in services
|
|
368
|
+
- ✅ Clear boundaries
|
|
369
|
+
|
|
370
|
+
### Reusability
|
|
371
|
+
- ✅ Validation services shared
|
|
372
|
+
- ✅ Configuration manager reused
|
|
373
|
+
- ✅ Status service used everywhere
|
|
374
|
+
- ✅ No duplication
|
|
375
|
+
|
|
376
|
+
### Testability
|
|
377
|
+
- ✅ Each component has clear inputs/outputs
|
|
378
|
+
- ✅ Services can be mocked
|
|
379
|
+
- ✅ Webview can be tested independently
|
|
380
|
+
- ✅ Message protocol well-defined
|
|
381
|
+
|
|
382
|
+
### Maintainability
|
|
383
|
+
- ✅ One file per provider
|
|
384
|
+
- ✅ Clear naming conventions
|
|
385
|
+
- ✅ TypeScript type safety
|
|
386
|
+
- ✅ Well-documented
|
|
387
|
+
|
|
388
|
+
### Extensibility
|
|
389
|
+
- ✅ Easy to add new providers
|
|
390
|
+
- ✅ Easy to add validation steps
|
|
391
|
+
- ✅ Easy to add new panels
|
|
392
|
+
- ✅ Doesn't break existing code
|
|
393
|
+
|
|
394
|
+
## Performance Considerations
|
|
395
|
+
|
|
396
|
+
### Lazy Loading
|
|
397
|
+
- Steps rendered but hidden (display:none)
|
|
398
|
+
- No unnecessary re-renders
|
|
399
|
+
- Fast step transitions
|
|
400
|
+
|
|
401
|
+
### Efficient Communication
|
|
402
|
+
- Messages only when needed
|
|
403
|
+
- No polling
|
|
404
|
+
- Batch updates when possible
|
|
405
|
+
|
|
406
|
+
### Minimal Dependencies
|
|
407
|
+
- Uses built-in VSCode APIs
|
|
408
|
+
- No heavy external libraries
|
|
409
|
+
- Small bundle size (84 KB)
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
This architecture ensures:
|
|
414
|
+
1. **Clean code** - Easy to read and maintain
|
|
415
|
+
2. **Good UX** - Fast, responsive, clear feedback
|
|
416
|
+
3. **Extensible** - Easy to add features
|
|
417
|
+
4. **Reliable** - TypeScript safety, error handling
|
|
418
|
+
5. **Professional** - Follows VSCode best practices
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Change Log
|
|
2
|
+
|
|
3
|
+
All notable changes to the "AI Changelog Generator" extension will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.1.0] - 2026-01-10
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Initial release
|
|
9
|
+
- AI-powered commit message generation
|
|
10
|
+
- Changelog generation from git history
|
|
11
|
+
- Support for multiple AI providers (OpenAI, Anthropic, Google, Azure, Ollama)
|
|
12
|
+
- Secure API key storage using VS Code Secret Storage
|
|
13
|
+
- Sidebar panels for Commit Assistant and Release Manager
|
|
14
|
+
- Git integration with working directory analysis
|
|
15
|
+
- Interactive commit message selection
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
- Generate commit messages from staged/unstaged changes
|
|
19
|
+
- Create release changelogs with version tagging
|
|
20
|
+
- Configure AI provider and model preferences
|
|
21
|
+
- Real-time file change analysis
|
|
22
|
+
- Integration with VS Code's built-in Git extension
|
|
23
|
+
|
|
24
|
+
### Technical
|
|
25
|
+
- Built on @entro314labs/ai-changelog-generator v3.7.1
|
|
26
|
+
- TypeScript implementation with full type safety
|
|
27
|
+
- Webview-based UI for rich interactions
|
|
28
|
+
- Extensible architecture for future enhancements
|