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.
@@ -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