sqlew 4.0.5 → 4.1.1
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/CHANGELOG.md +1817 -1782
- package/README.md +409 -468
- package/assets/claude-md-snippets/plan-mode-integration.md +17 -6
- package/assets/config.example.toml +282 -284
- package/assets/sample-agents/README.md +36 -40
- package/assets/sample-agents/sqlew-architect.md +321 -322
- package/assets/sample-agents/sqlew-researcher.md +292 -293
- package/assets/sample-agents/sqlew-scrum-master.md +286 -287
- package/assets/sample-commands/README.md +56 -57
- package/assets/sample-skills/sqlew-plan-guidance/SKILL.md +33 -26
- package/dist/cli/hooks/check-completion.d.ts +19 -0
- package/dist/cli/hooks/check-completion.d.ts.map +1 -0
- package/dist/cli/hooks/check-completion.js +104 -0
- package/dist/cli/hooks/check-completion.js.map +1 -0
- package/dist/cli/hooks/init-hooks.d.ts +35 -0
- package/dist/cli/hooks/init-hooks.d.ts.map +1 -0
- package/dist/cli/hooks/init-hooks.js +425 -0
- package/dist/cli/hooks/init-hooks.js.map +1 -0
- package/dist/cli/hooks/mark-done.d.ts +25 -0
- package/dist/cli/hooks/mark-done.d.ts.map +1 -0
- package/dist/cli/hooks/mark-done.js +128 -0
- package/dist/cli/hooks/mark-done.js.map +1 -0
- package/dist/cli/hooks/plan-id-utils.d.ts +83 -0
- package/dist/cli/hooks/plan-id-utils.d.ts.map +1 -0
- package/dist/cli/hooks/plan-id-utils.js +183 -0
- package/dist/cli/hooks/plan-id-utils.js.map +1 -0
- package/dist/cli/hooks/save.d.ts +23 -0
- package/dist/cli/hooks/save.d.ts.map +1 -0
- package/dist/cli/hooks/save.js +90 -0
- package/dist/cli/hooks/save.js.map +1 -0
- package/dist/cli/hooks/stdin-parser.d.ts +139 -0
- package/dist/cli/hooks/stdin-parser.d.ts.map +1 -0
- package/dist/cli/hooks/stdin-parser.js +127 -0
- package/dist/cli/hooks/stdin-parser.js.map +1 -0
- package/dist/cli/hooks/suggest.d.ts +19 -0
- package/dist/cli/hooks/suggest.d.ts.map +1 -0
- package/dist/cli/hooks/suggest.js +157 -0
- package/dist/cli/hooks/suggest.js.map +1 -0
- package/dist/cli/hooks/track-plan.d.ts +36 -0
- package/dist/cli/hooks/track-plan.d.ts.map +1 -0
- package/dist/cli/hooks/track-plan.js +152 -0
- package/dist/cli/hooks/track-plan.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +56 -16
- package/dist/cli.js.map +1 -1
- package/dist/config/global-config.d.ts +187 -0
- package/dist/config/global-config.d.ts.map +1 -0
- package/dist/config/global-config.js +206 -0
- package/dist/config/global-config.js.map +1 -0
- package/dist/config/loader.d.ts +42 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +96 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/constants.d.ts +4 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js +59 -59
- package/dist/database/migrations/v4/20251126000000_v4_bootstrap.js.map +1 -1
- package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js +33 -33
- package/dist/database/migrations/v4/20251126000001_v4_migrate_data.js.map +1 -1
- package/dist/database/migrations/v4/20251127000000_add_rejected_status.js +7 -7
- package/dist/database/migrations/v4/20251127000000_add_rejected_status.js.map +1 -1
- package/dist/database/migrations/v4/20251127000001_update_task_move_help.js +11 -11
- package/dist/database/migrations/v4/20251127000001_update_task_move_help.js.map +1 -1
- package/dist/database/migrations/v4/20251127000002_v4_seed_help_system.js +10 -10
- package/dist/database/migrations/v4/20251127000002_v4_seed_help_system.js.map +1 -1
- package/dist/database/migrations/v4/20251127000003_add_task_notes_column.js +7 -7
- package/dist/database/migrations/v4/20251127000003_add_task_notes_column.js.map +1 -1
- package/dist/database/migrations/v4/20251128000000_drop_all_views.js +8 -8
- package/dist/database/migrations/v4/20251128000000_drop_all_views.js.map +1 -1
- package/dist/database/operations/queries.d.ts.map +1 -1
- package/dist/database/operations/queries.js +11 -2
- package/dist/database/operations/queries.js.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/init-agents.js +0 -1
- package/dist/init-agents.js.map +1 -1
- package/dist/init-skills.d.ts +4 -3
- package/dist/init-skills.d.ts.map +1 -1
- package/dist/init-skills.js +10 -3
- package/dist/init-skills.js.map +1 -1
- package/dist/server/setup.d.ts +8 -0
- package/dist/server/setup.d.ts.map +1 -1
- package/dist/server/setup.js +141 -21
- package/dist/server/setup.js.map +1 -1
- package/dist/sync-agents.d.ts.map +1 -1
- package/dist/sync-agents.js +48 -3
- package/dist/sync-agents.js.map +1 -1
- package/dist/sync-commands.d.ts.map +1 -1
- package/dist/sync-commands.js +43 -3
- package/dist/sync-commands.js.map +1 -1
- package/dist/tools/constraints/actions/get.d.ts.map +1 -1
- package/dist/tools/constraints/actions/get.js +5 -8
- package/dist/tools/constraints/actions/get.js.map +1 -1
- package/dist/tools/constraints/help/help.d.ts.map +1 -1
- package/dist/tools/constraints/help/help.js +1 -6
- package/dist/tools/constraints/help/help.js.map +1 -1
- package/dist/tools/context/actions/get.d.ts.map +1 -1
- package/dist/tools/context/actions/get.js.map +1 -1
- package/dist/tools/context/actions/search-layer.d.ts.map +1 -1
- package/dist/tools/context/actions/search-layer.js +5 -3
- package/dist/tools/context/actions/search-layer.js.map +1 -1
- package/dist/tools/context/actions/set-from-policy.d.ts +2 -1
- package/dist/tools/context/actions/set-from-policy.d.ts.map +1 -1
- package/dist/tools/context/actions/set-from-policy.js.map +1 -1
- package/dist/tools/context/help/help.d.ts.map +1 -1
- package/dist/tools/context/help/help.js +1 -7
- package/dist/tools/context/help/help.js.map +1 -1
- package/dist/tools/context/internal/queries.d.ts.map +1 -1
- package/dist/tools/context/internal/queries.js +5 -2
- package/dist/tools/context/internal/queries.js.map +1 -1
- package/dist/tools/context/types.d.ts +1 -1
- package/dist/tools/context/types.d.ts.map +1 -1
- package/dist/tools/files/actions/get.d.ts.map +1 -1
- package/dist/tools/files/actions/get.js +4 -6
- package/dist/tools/files/actions/get.js.map +1 -1
- package/dist/tools/files/help/help.d.ts.map +1 -1
- package/dist/tools/files/help/help.js +1 -6
- package/dist/tools/files/help/help.js.map +1 -1
- package/dist/tools/suggest/help/constraint-help.d.ts.map +1 -1
- package/dist/tools/suggest/help/constraint-help.js +0 -2
- package/dist/tools/suggest/help/constraint-help.js.map +1 -1
- package/dist/tools/suggest/internal/constraint-queries.d.ts.map +1 -1
- package/dist/tools/suggest/internal/constraint-queries.js +12 -5
- package/dist/tools/suggest/internal/constraint-queries.js.map +1 -1
- package/dist/tools/suggest/internal/queries.js +2 -2
- package/dist/tools/suggest/internal/queries.js.map +1 -1
- package/dist/tools/tasks/help/help.d.ts.map +1 -1
- package/dist/tools/tasks/help/help.js +0 -6
- package/dist/tools/tasks/help/help.js.map +1 -1
- package/dist/tools/tasks/help/use-case.d.ts.map +1 -1
- package/dist/tools/tasks/help/use-case.js +0 -1
- package/dist/tools/tasks/help/use-case.js.map +1 -1
- package/dist/tools/tasks/watcher/status.d.ts.map +1 -1
- package/dist/tools/tasks/watcher/status.js +5 -1
- package/dist/tools/tasks/watcher/status.js.map +1 -1
- package/dist/types/decision/params.d.ts +7 -6
- package/dist/types/decision/params.d.ts.map +1 -1
- package/dist/types/decision/templates.d.ts +3 -2
- package/dist/types/decision/templates.d.ts.map +1 -1
- package/dist/types/view-entities.d.ts +2 -1
- package/dist/types/view-entities.d.ts.map +1 -1
- package/dist/types.d.ts +19 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/enum-converter.d.ts +72 -0
- package/dist/utils/enum-converter.d.ts.map +1 -0
- package/dist/utils/enum-converter.js +76 -0
- package/dist/utils/enum-converter.js.map +1 -0
- package/dist/utils/hook-queue.d.ts +81 -0
- package/dist/utils/hook-queue.d.ts.map +1 -0
- package/dist/utils/hook-queue.js +156 -0
- package/dist/utils/hook-queue.js.map +1 -0
- package/dist/utils/project-root.d.ts +9 -2
- package/dist/utils/project-root.d.ts.map +1 -1
- package/dist/utils/project-root.js +16 -2
- package/dist/utils/project-root.js.map +1 -1
- package/dist/utils/tag-parser.d.ts.map +1 -1
- package/dist/utils/tag-parser.js +6 -0
- package/dist/utils/tag-parser.js.map +1 -1
- package/dist/utils/universal-knex.js +3 -3
- package/dist/utils/universal-knex.js.map +1 -1
- package/dist/utils/validators.d.ts +1 -1
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +1 -1
- package/dist/utils/validators.js.map +1 -1
- package/dist/utils/vcs-adapter.d.ts +44 -0
- package/dist/utils/vcs-adapter.d.ts.map +1 -1
- package/dist/utils/vcs-adapter.js +88 -0
- package/dist/utils/vcs-adapter.js.map +1 -1
- package/dist/utils/view-queries.d.ts.map +1 -1
- package/dist/utils/view-queries.js +9 -19
- package/dist/utils/view-queries.js.map +1 -1
- package/dist/watcher/base-watcher.d.ts +69 -0
- package/dist/watcher/base-watcher.d.ts.map +1 -0
- package/dist/watcher/base-watcher.js +130 -0
- package/dist/watcher/base-watcher.js.map +1 -0
- package/dist/watcher/index.d.ts +3 -0
- package/dist/watcher/index.d.ts.map +1 -1
- package/dist/watcher/index.js +2 -0
- package/dist/watcher/index.js.map +1 -1
- package/dist/watcher/queue-watcher.d.ts +64 -0
- package/dist/watcher/queue-watcher.d.ts.map +1 -0
- package/dist/watcher/queue-watcher.js +187 -0
- package/dist/watcher/queue-watcher.js.map +1 -0
- package/docs/ADR_CONCEPTS.md +140 -0
- package/docs/CONFIGURATION.md +922 -925
- package/docs/CROSS_DATABASE.md +153 -0
- package/docs/DATABASE_AUTH.md +70 -356
- package/docs/HOOKS_GUIDE.md +159 -0
- package/docs/SLASH_COMMANDS.md +329 -337
- package/docs/TASK_SYSTEM_DEPRECATED.md +88 -0
- package/docs/changelogs/CHANGELOG_ARCHIVE_v3.4_and_older.md +293 -296
- package/docs/cli/DATA_EXPORT_IMPORT.md +699 -700
- package/docs/cli/README.md +276 -277
- package/package.json +123 -124
- package/docs/ACCEPTANCE_CRITERIA.md +0 -625
- package/docs/AI_AGENT_GUIDE.md +0 -299
- package/docs/ARCHITECTURE.md +0 -167
- package/docs/AUTO_FILE_TRACKING.md +0 -841
- package/docs/BATCH_VALIDATION.md +0 -617
- package/docs/BEST_PRACTICES.md +0 -168
- package/docs/CONSTRAINT_INTELLIGENCE.md +0 -339
- package/docs/DECISION_CONTEXT.md +0 -697
- package/docs/DECISION_INTELLIGENCE.md +0 -605
- package/docs/GIT_AWARE_AUTO_COMPLETE.md +0 -646
- package/docs/MIGRATION_GUIDE_V3.9.0.md +0 -371
- package/docs/SHARED_CONCEPTS.md +0 -225
- package/docs/SPECIALIZED_AGENTS.md +0 -126
- package/docs/TASK_ACTIONS.md +0 -1177
- package/docs/TASK_OVERVIEW.md +0 -452
- package/docs/TASK_PRUNING.md +0 -594
- package/docs/TOOL_REFERENCE.md +0 -1077
- package/docs/TOOL_SELECTION.md +0 -83
- package/docs/WORKFLOWS.md +0 -941
package/CHANGELOG.md
CHANGED
|
@@ -1,1782 +1,1817 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to sqlew will be documented in this file.
|
|
4
|
-
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## [4.
|
|
11
|
-
|
|
12
|
-
###
|
|
13
|
-
|
|
14
|
-
**
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
**
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
**
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
- Updated `
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
### Added
|
|
175
|
-
|
|
176
|
-
**
|
|
177
|
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
-
|
|
186
|
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
-
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
|
|
227
|
-
**
|
|
228
|
-
|
|
229
|
-
- `
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
**
|
|
246
|
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
### Added
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
-
|
|
263
|
-
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
-
|
|
269
|
-
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
**
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
-
|
|
287
|
-
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
**
|
|
300
|
-
-
|
|
301
|
-
-
|
|
302
|
-
-
|
|
303
|
-
-
|
|
304
|
-
|
|
305
|
-
-
|
|
306
|
-
|
|
307
|
-
**
|
|
308
|
-
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
-
|
|
321
|
-
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
-
|
|
325
|
-
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
-
|
|
331
|
-
-
|
|
332
|
-
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
-
|
|
338
|
-
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
-
|
|
360
|
-
-
|
|
361
|
-
-
|
|
362
|
-
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
**
|
|
367
|
-
-
|
|
368
|
-
-
|
|
369
|
-
-
|
|
370
|
-
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
-
|
|
374
|
-
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
-
|
|
384
|
-
-
|
|
385
|
-
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
-
|
|
392
|
-
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
###
|
|
426
|
-
|
|
427
|
-
**
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
**
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
-
|
|
496
|
-
|
|
497
|
-
**
|
|
498
|
-
-
|
|
499
|
-
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
**
|
|
509
|
-
-
|
|
510
|
-
|
|
511
|
-
**
|
|
512
|
-
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
-
|
|
518
|
-
|
|
519
|
-
**
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
**
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
-
|
|
551
|
-
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
[
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
**
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
{
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
**
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
-
|
|
721
|
-
-
|
|
722
|
-
-
|
|
723
|
-
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
-
|
|
738
|
-
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
####
|
|
757
|
-
|
|
758
|
-
-
|
|
759
|
-
-
|
|
760
|
-
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
-
|
|
778
|
-
-
|
|
779
|
-
-
|
|
780
|
-
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
-
|
|
797
|
-
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
- **
|
|
803
|
-
- **
|
|
804
|
-
- **
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
####
|
|
815
|
-
-
|
|
816
|
-
-
|
|
817
|
-
-
|
|
818
|
-
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
**
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
- **
|
|
832
|
-
- **
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
- **
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
-
|
|
846
|
-
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
**
|
|
851
|
-
|
|
852
|
-
####
|
|
853
|
-
-
|
|
854
|
-
-
|
|
855
|
-
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
**
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
- **
|
|
921
|
-
-
|
|
922
|
-
-
|
|
923
|
-
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
- ✅ **
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
- **
|
|
945
|
-
- **
|
|
946
|
-
- **
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
- **
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
- **
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
- ✅ **
|
|
972
|
-
- ✅ **
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
####
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
####
|
|
997
|
-
**
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
- **
|
|
1024
|
-
- **
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
-
|
|
1029
|
-
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
-
|
|
1054
|
-
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
**
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
-
|
|
1065
|
-
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
- **
|
|
1072
|
-
- **
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
- ✅
|
|
1089
|
-
- ✅
|
|
1090
|
-
- ✅
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
-
|
|
1101
|
-
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
####
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
-
|
|
1150
|
-
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
####
|
|
1159
|
-
|
|
1160
|
-
-
|
|
1161
|
-
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
- ✅ **
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
-
|
|
1229
|
-
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
####
|
|
1238
|
-
|
|
1239
|
-
-
|
|
1240
|
-
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
- ✅ **
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
-
|
|
1308
|
-
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
####
|
|
1317
|
-
|
|
1318
|
-
-
|
|
1319
|
-
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
- ✅ **
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
-
|
|
1387
|
-
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
####
|
|
1396
|
-
|
|
1397
|
-
-
|
|
1398
|
-
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
- ✅ **
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
-
|
|
1466
|
-
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
####
|
|
1475
|
-
|
|
1476
|
-
-
|
|
1477
|
-
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
- ✅ **
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
-
|
|
1528
|
-
-
|
|
1529
|
-
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
-
|
|
1565
|
-
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
-
|
|
1577
|
-
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
- **
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
- **
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
####
|
|
1600
|
-
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
- ✅
|
|
1607
|
-
- ✅
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
####
|
|
1625
|
-
-
|
|
1626
|
-
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
-
|
|
1638
|
-
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
- ✅
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
-
|
|
1676
|
-
- **
|
|
1677
|
-
-
|
|
1678
|
-
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
-
|
|
1684
|
-
-
|
|
1685
|
-
- **
|
|
1686
|
-
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
-
|
|
1712
|
-
-
|
|
1713
|
-
-
|
|
1714
|
-
- `
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
-
|
|
1721
|
-
-
|
|
1722
|
-
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
-
|
|
1740
|
-
-
|
|
1741
|
-
-
|
|
1742
|
-
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
####
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to sqlew will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [4.1.1] - 2025-12-24
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
**Claude Desktop Compatibility**
|
|
15
|
+
|
|
16
|
+
- Fixed MCP protocol corruption caused by migration logs going to stdout
|
|
17
|
+
- Changed all `console.log` to `console.error` in migration files (57 files)
|
|
18
|
+
- MCP servers must only output JSON-RPC to stdout; debug logs now go to stderr
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## [4.1.0] - 2025-12-24
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
**Claude Code Hooks Integration**
|
|
27
|
+
|
|
28
|
+
- File Queue Architecture for async decision operations
|
|
29
|
+
- Hook commands: `suggest`, `track-plan`, `save`, `check-completion`, `mark-done`
|
|
30
|
+
- QueueWatcher monitors `.sqlew/queue/pending.json` for changes
|
|
31
|
+
- Auto-initialization with `sqlew init --hooks`
|
|
32
|
+
- PreToolUse hooks (Task, Write triggers)
|
|
33
|
+
- PostToolUse hooks (Edit/Write, TodoWrite, ExitPlanMode triggers)
|
|
34
|
+
- Git hooks integration (post-merge, post-rewrite)
|
|
35
|
+
|
|
36
|
+
**PostgreSQL Compatibility**
|
|
37
|
+
|
|
38
|
+
- Replaced GROUP_CONCAT with string_agg for PostgreSQL
|
|
39
|
+
- Expanded GROUP BY clauses for PostgreSQL strictness compliance
|
|
40
|
+
- Cross-DB compatibility verified: SQLite, MySQL, MariaDB, PostgreSQL
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Hook operations now use file queue instead of direct DB access (<100ms latency)
|
|
45
|
+
- QueueWatcher singleton monitors queue file and processes decisions asynchronously
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## [4.0.5] - 2025-12-19
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
**License Change: AGPL-3.0 → Apache-2.0**
|
|
54
|
+
|
|
55
|
+
- Changed license from AGPLv3 to Apache License 2.0
|
|
56
|
+
- More permissive license for commercial and enterprise adoption
|
|
57
|
+
- Added NOTICE file with third-party attributions
|
|
58
|
+
- Updated LICENSE file with full Apache 2.0 text
|
|
59
|
+
- Updated package.json license field
|
|
60
|
+
|
|
61
|
+
**Why Apache 2.0?**
|
|
62
|
+
- Patent protection for contributors and users
|
|
63
|
+
- Widely adopted by major tech companies (Google, Microsoft, AWS)
|
|
64
|
+
- Easier enterprise adoption without copyleft concerns
|
|
65
|
+
- Compatible with most open source licenses
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## [4.0.4] - 2025-12-10
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
**Slash Command Sync Bug**
|
|
74
|
+
|
|
75
|
+
- Fixed `sync-commands.ts` referencing obsolete command files (`sqw-scrum.md`, `sqw-documentor.md`, etc.)
|
|
76
|
+
- Updated to use new unified `sqlew.md` command file
|
|
77
|
+
- Resolves "Source file not found" errors during npm package installation
|
|
78
|
+
|
|
79
|
+
### Added
|
|
80
|
+
|
|
81
|
+
**Agent Skills Configuration**
|
|
82
|
+
|
|
83
|
+
- Added `skills` field to agent YAML frontmatter for automatic skill loading
|
|
84
|
+
- All sqlew agents now reference `sqlew-plan-guidance` skill
|
|
85
|
+
- Agents: `sqlew-architect`, `sqlew-researcher`, `sqlew-scrum-master`
|
|
86
|
+
|
|
87
|
+
**Config Example Update**
|
|
88
|
+
|
|
89
|
+
- Added `[commands]` section to `assets/config.example.toml`
|
|
90
|
+
- Documents the unified `/sqlew` command configuration
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
|
|
94
|
+
**Plan Mode Integration Documentation**
|
|
95
|
+
|
|
96
|
+
- Changed `Phase 1 (Research)` → `Research Phase` for flexibility
|
|
97
|
+
- Changed `Phase 4 (Final Plan)` → `Final Plan Phase`
|
|
98
|
+
- Plan mode phases are now semantically named instead of numbered
|
|
99
|
+
|
|
100
|
+
**CommandsConfig Simplified**
|
|
101
|
+
|
|
102
|
+
- Consolidated 6 individual command options into single `sqlew` option
|
|
103
|
+
- Updated `src/config/types.ts` and `src/config/minimal-generator.ts`
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## [4.0.3] - 2025-12-04
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
|
|
111
|
+
**Unified `/sqlew` Slash Command**
|
|
112
|
+
|
|
113
|
+
- Consolidated all slash commands (`/sqw-plan`, `/sqw-scrum`, `/sqw-research`, etc.) into single `/sqlew` command
|
|
114
|
+
- Natural language interface with automatic intent detection
|
|
115
|
+
- 6-level intent priority: List/Status → Search → Record → Update → Execute → Task Creation
|
|
116
|
+
- Supports both English and Japanese keywords
|
|
117
|
+
- Removed custom agent definitions (sqlew-architect, scrum-master, sqlew-researcher)
|
|
118
|
+
|
|
119
|
+
**Usage Examples:**
|
|
120
|
+
```bash
|
|
121
|
+
/sqlew # Show status and suggest next action
|
|
122
|
+
/sqlew show remaining tasks # List/Status intent
|
|
123
|
+
/sqlew search for auth decisions # Search intent
|
|
124
|
+
/sqlew record that we use JWT # Record intent
|
|
125
|
+
/sqlew execute pending tasks # Execute intent
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
**v4_task_details JOIN Bug**
|
|
131
|
+
|
|
132
|
+
- Fixed `task.get` action failing with "no such column: td.project_id" error
|
|
133
|
+
- Root cause: `v4_task_details` table has only `task_id` as PK, not `project_id`
|
|
134
|
+
- Removed invalid `.andOn('t.project_id', '=', 'td.project_id')` from JOIN conditions
|
|
135
|
+
- Affected files: `task-queries.ts`, `get.ts`
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
|
|
139
|
+
**Documentation Updates**
|
|
140
|
+
|
|
141
|
+
- Rewrote `CLAUDE.md` with unified `/sqlew` command section
|
|
142
|
+
- Updated `README.md` Quick Start to use `/sqlew`
|
|
143
|
+
- Rewrote `docs/SLASH_COMMANDS.md` as Unified /sqlew Command Guide
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## [4.0.2] - 2025-11-28
|
|
148
|
+
|
|
149
|
+
### BREAKING CHANGES
|
|
150
|
+
|
|
151
|
+
**SQL Dump No Longer Supports Cross-Database Format Conversion**
|
|
152
|
+
|
|
153
|
+
The `db:dump` command now generates SQL for the **same database type only**. Cross-database migrations (e.g., SQLite → MySQL) must use JSON export/import instead.
|
|
154
|
+
|
|
155
|
+
**Migration Required:**
|
|
156
|
+
```bash
|
|
157
|
+
# ❌ Old approach (no longer supported)
|
|
158
|
+
npx sqlew db:dump mysql backup.sql # Cross-DB conversion removed
|
|
159
|
+
|
|
160
|
+
# ✅ New approach: Use JSON for cross-database migration
|
|
161
|
+
npx sqlew db:export backup.json # Export to JSON
|
|
162
|
+
npx sqlew db:import backup.json # Import to target database
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Rationale:**
|
|
166
|
+
- SQL syntax differences between databases caused data corruption issues
|
|
167
|
+
- Case-insensitive pattern matching failed in certain scenarios
|
|
168
|
+
- JSON format is database-agnostic and handles all data types correctly
|
|
169
|
+
|
|
170
|
+
**Node.js 20+ Required**
|
|
171
|
+
|
|
172
|
+
Minimum Node.js version updated from 18.0.0 to 20.0.0.
|
|
173
|
+
|
|
174
|
+
### Added
|
|
175
|
+
|
|
176
|
+
**Unified CLI Entry Point**
|
|
177
|
+
|
|
178
|
+
- `npx sqlew db:export`, `npx sqlew db:import`, `npx sqlew db:dump` now work directly
|
|
179
|
+
- No `npm install` required - just use `npx sqlew <command>`
|
|
180
|
+
- CLI commands and MCP server mode unified under single `sqlew` entry point
|
|
181
|
+
- Removed separate `sqlew-cli` binary
|
|
182
|
+
|
|
183
|
+
### Fixed
|
|
184
|
+
|
|
185
|
+
**Case-Insensitive Validation for Master Records**
|
|
186
|
+
|
|
187
|
+
- Added case-insensitive duplicate detection when registering new records
|
|
188
|
+
- Prevents duplicate entries like "MyTag" and "mytag" from being created
|
|
189
|
+
- Applies to tags, scopes, layers, and other master table entries
|
|
190
|
+
- New utility: `src/utils/case-insensitive-validator.ts`
|
|
191
|
+
|
|
192
|
+
**SQLite to MySQL SQL Dump Case-Sensitivity Bug**
|
|
193
|
+
|
|
194
|
+
- Fixed regex pattern matching that failed with case variations
|
|
195
|
+
- SQL dump now correctly handles mixed-case identifiers
|
|
196
|
+
- Enhanced schema table export for better compatibility
|
|
197
|
+
|
|
198
|
+
### Changed
|
|
199
|
+
|
|
200
|
+
**Export Version Tracking**
|
|
201
|
+
|
|
202
|
+
- Export JSON now includes proper version metadata
|
|
203
|
+
- Version information helps with import compatibility checks
|
|
204
|
+
- Clearer error messages when importing incompatible versions
|
|
205
|
+
|
|
206
|
+
**CLI Documentation Update**
|
|
207
|
+
|
|
208
|
+
- Updated `docs/cli/README.md` with JSON-first migration workflow
|
|
209
|
+
- Added clear guidance on when to use `db:dump` vs `db:export`/`db:import`
|
|
210
|
+
- Improved comparison table for migration scenarios
|
|
211
|
+
|
|
212
|
+
### Added
|
|
213
|
+
|
|
214
|
+
**Case-Insensitive Validator Utility**
|
|
215
|
+
|
|
216
|
+
- New `src/utils/case-insensitive-validator.ts` for consistent validation
|
|
217
|
+
- Comprehensive test suite: `src/tests/unit/utils/case-insensitive-validator.test.ts`
|
|
218
|
+
- Reusable across all master table operations
|
|
219
|
+
|
|
220
|
+
### Migration Notes
|
|
221
|
+
|
|
222
|
+
**Backward Compatibility:**
|
|
223
|
+
- Existing databases unaffected
|
|
224
|
+
- JSON export/import workflows unchanged
|
|
225
|
+
- SQL dumps for same-database-type operations still work
|
|
226
|
+
|
|
227
|
+
**Action Required:**
|
|
228
|
+
- Update any scripts that use `db:dump` for cross-database migrations
|
|
229
|
+
- Switch to `db:export`/`db:import` for SQLite ↔ MySQL ↔ PostgreSQL migrations
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## [4.0.1] - 2025-11-28
|
|
234
|
+
|
|
235
|
+
### Removed
|
|
236
|
+
|
|
237
|
+
**Database Views Eliminated**
|
|
238
|
+
|
|
239
|
+
- Dropped all database views (`v_tagged_constraints`, `v_recent_file_changes`, etc.)
|
|
240
|
+
- Views caused migration complexity across SQLite/MySQL/PostgreSQL due to database-specific syntax
|
|
241
|
+
- Migration: `20251128000000_drop_all_views.ts`
|
|
242
|
+
|
|
243
|
+
### Changed
|
|
244
|
+
|
|
245
|
+
**JOIN-Based Queries**
|
|
246
|
+
|
|
247
|
+
- `src/tools/constraints/actions/get.ts` - Replaced `v_tagged_constraints` view with JOIN query
|
|
248
|
+
- `src/tools/files/actions/get.ts` - Replaced `v_recent_file_changes` view with JOIN query
|
|
249
|
+
- Uses `UniversalKnex` wrapper for cross-database compatibility (date functions, boolean values, string aggregation)
|
|
250
|
+
|
|
251
|
+
**VCS Test Cleanup**
|
|
252
|
+
|
|
253
|
+
- `src/tests/feature/vcs/git-aware-completion.test.ts` - Added automatic git reset after tests
|
|
254
|
+
- Test commits are now automatically dropped when tests complete
|
|
255
|
+
- Prevents test artifacts from polluting git history
|
|
256
|
+
|
|
257
|
+
### Added
|
|
258
|
+
|
|
259
|
+
**No-Views Guardrail Skill**
|
|
260
|
+
|
|
261
|
+
- `.claude/skills/no-views/SKILL.md` - Documentation for view prohibition policy
|
|
262
|
+
- `.claude/skills/skill-rules.json` - Added `no-views` rule (enforcement: block)
|
|
263
|
+
- Blocks creation of database views, requires JOINs instead
|
|
264
|
+
|
|
265
|
+
**Documentation Updates**
|
|
266
|
+
|
|
267
|
+
- `CLAUDE.md` - Updated to reflect no-views policy
|
|
268
|
+
- Removed Views section from database schema documentation
|
|
269
|
+
- Added `no-views` to Guardrail Skills table
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## [4.0.0] - 2025-11-27
|
|
274
|
+
|
|
275
|
+
### Changed
|
|
276
|
+
|
|
277
|
+
**Concept & Positioning**
|
|
278
|
+
|
|
279
|
+
- Reframed sqlew as a **shared SQL-backed context repository** and a **Decision & Constraint repository layer** for AI tools
|
|
280
|
+
- Clarified that Decisions capture *why* changes were made and Constraints capture *how* code should be written
|
|
281
|
+
- Updated README introduction to focus on "Never Start From Zero Context Again" and the repository-based metaphor instead of generic "memory"
|
|
282
|
+
|
|
283
|
+
**Documentation & Cleanup**
|
|
284
|
+
|
|
285
|
+
- Updated `README.md` to describe sqlew as a context repository rather than an abstract memory layer
|
|
286
|
+
- Aligned terminology across docs around Decisions, Constraints, tasks, and the repository layer
|
|
287
|
+
- Confirmed that previously removed/legacy features remain out of scope, keeping focus on decision history and constraint rules
|
|
288
|
+
|
|
289
|
+
> Note: v4.0.0 is primarily a **concept and documentation alignment release**. Core Decision/Constraint features and the v3.9.x database schema remain compatible; no breaking API changes were introduced for existing integrations.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## [3.9.0] - 2025-01-15
|
|
294
|
+
|
|
295
|
+
### Added
|
|
296
|
+
|
|
297
|
+
**🎯 Decision Intelligence System with Three-Tier Similarity Detection**
|
|
298
|
+
|
|
299
|
+
**New `suggest` Tool:**
|
|
300
|
+
- **by_key** - Pattern-based decision search (e.g., "api/*/latency" finds all API latency decisions)
|
|
301
|
+
- **by_tags** - Tag similarity scoring for related decisions (Jaccard similarity)
|
|
302
|
+
- **by_context** - Combined key + tags + layer search for best matches
|
|
303
|
+
- **check_duplicate** - Duplicate decision detection with similarity scoring (0-100 points)
|
|
304
|
+
|
|
305
|
+
**Three-Tier Duplicate Detection (Auto-Triggered):**
|
|
306
|
+
- **Tier 1 (35-44 points):** Gentle nudge - Non-blocking warning with suggestions
|
|
307
|
+
- **Tier 2 (45-59 points):** Hard block - Prevents creation, requires explicit override or update
|
|
308
|
+
- **Tier 3 (60+ points):** Auto-update - Transparently updates existing decision, preserves new value
|
|
309
|
+
|
|
310
|
+
**Similarity Scoring Algorithm:**
|
|
311
|
+
- Tag overlap: 0-40 points (10 per matching tag, max 4)
|
|
312
|
+
- Layer match: 0-25 points (same layer bonus)
|
|
313
|
+
- Key similarity: 0-20 points (pattern + Levenshtein distance)
|
|
314
|
+
- Recency: 0-10 points (recent updates prioritized)
|
|
315
|
+
- Priority: 0-5 points (critical decisions weighted)
|
|
316
|
+
|
|
317
|
+
**Policy-Based Auto-Triggering:**
|
|
318
|
+
- Suggestions automatically triggered when policies have `suggest_similar=1`
|
|
319
|
+
- Integrated with `decision.set` - returns suggestions in response
|
|
320
|
+
- Configurable relevance threshold via `min_score` parameter (default: 30)
|
|
321
|
+
- Policy validation rules support for targeted auto-triggering
|
|
322
|
+
|
|
323
|
+
**Enhanced Decision Metadata:**
|
|
324
|
+
- `duplicate_reason` - Similarity explanation with matched tags and layer info
|
|
325
|
+
- `update_command` - Ready-to-use command for updating existing decisions
|
|
326
|
+
- `version_info` - Existing decision version tracking
|
|
327
|
+
- `auto_updated` flag - Indicates Tier 3 transparent updates
|
|
328
|
+
|
|
329
|
+
**Supporting Features:**
|
|
330
|
+
- Tag parser utility (`src/utils/tag-parser.ts`) for flexible tag handling
|
|
331
|
+
- Policy validation integration (`src/utils/policy-validator.ts`)
|
|
332
|
+
- Suggestion scorer (`src/utils/suggestion-scorer.ts`) with breakdown
|
|
333
|
+
- Self-exclusion logic (prevents matching against own key during updates)
|
|
334
|
+
|
|
335
|
+
### Fixed
|
|
336
|
+
|
|
337
|
+
**PostgreSQL Cross-Database Compatibility**
|
|
338
|
+
- Fixed CAST type mismatch in `v_tagged_decisions` view export
|
|
339
|
+
- PostgreSQL now correctly handles `COALESCE(TEXT, NUMERIC)` with `CAST(value AS TEXT)`
|
|
340
|
+
- MySQL/MariaDB use `CAST(value AS CHAR)` for compatibility
|
|
341
|
+
- Migration: `20251114000000_fix_v_tagged_decisions_numeric_support.ts`
|
|
342
|
+
- SQL dump export: Enhanced view conversion in `src/utils/sql-dump/schema/views.ts`
|
|
343
|
+
- Result: All 20 cross-database tests passing (MySQL, MariaDB, PostgreSQL)
|
|
344
|
+
|
|
345
|
+
**Test Suite Improvements**
|
|
346
|
+
- Fixed FK constraint cleanup order in `decision-intelligence-e2e.test.ts`
|
|
347
|
+
- Child records now deleted before parent records (tags → scopes → context → decisions)
|
|
348
|
+
- Result: 3/3 e2e workflow tests passing, no cleanup errors
|
|
349
|
+
|
|
350
|
+
**Schema Fixes**
|
|
351
|
+
- Migration `20251112000001_fix_task_file_links_schema_v3_9_0.ts` - Fixed UNIQUE constraint
|
|
352
|
+
- Migration `20251112000002_fix_task_pruned_files_schema_v3_9_0.ts` - Enhanced task file tracking
|
|
353
|
+
- All migrations idempotent with existence checks
|
|
354
|
+
|
|
355
|
+
### Changed
|
|
356
|
+
|
|
357
|
+
**Test Organization (Docker Dependency Separation)**
|
|
358
|
+
- Moved 7 Docker-dependent tests to `src/tests/docker/` directory
|
|
359
|
+
- `npm test` now runs 481 unit tests without Docker (0 failures)
|
|
360
|
+
- `npm run test:docker` runs cross-database tests (requires Docker containers)
|
|
361
|
+
- Removed `test:all` script (caused database conflicts)
|
|
362
|
+
- Updated `.husky/pre-commit` to reflect test separation
|
|
363
|
+
- Decision documented in SQLew: `test-organization-docker-separation`
|
|
364
|
+
|
|
365
|
+
**Git Hook Enhancement**
|
|
366
|
+
- Pre-commit hook now checks for **PUSHED** migration files instead of just committed
|
|
367
|
+
- Auto-detects remote branch (origin/main, origin/master, origin/dev)
|
|
368
|
+
- Allows editing locally committed migrations (not yet pushed)
|
|
369
|
+
- Prevents editing migrations that exist in remote
|
|
370
|
+
- Graceful fallback for local-only repositories
|
|
371
|
+
|
|
372
|
+
**Debug Output Cleanup**
|
|
373
|
+
- Commented out scope validation warnings in test output
|
|
374
|
+
- Removed DEBUG/DIAGNOSTIC console.log statements
|
|
375
|
+
- Cleaner test output focusing on actual results
|
|
376
|
+
- 75% reduction in test output verbosity
|
|
377
|
+
|
|
378
|
+
### Removed
|
|
379
|
+
|
|
380
|
+
**Code Cleanup**
|
|
381
|
+
- Deleted monolithic `src/utils/sql-dump.ts` (-1,799 lines)
|
|
382
|
+
- Functionality now in modular structure:
|
|
383
|
+
- `src/utils/sql-dump/schema/tables.ts`
|
|
384
|
+
- `src/utils/sql-dump/schema/views.ts`
|
|
385
|
+
- `src/utils/sql-dump/schema/primary-keys.ts`
|
|
386
|
+
- `src/utils/sql-dump/schema/indexes.ts`
|
|
387
|
+
- Deleted test tracking files (`test-tracking/file1.ts`, etc.)
|
|
388
|
+
|
|
389
|
+
### Documentation
|
|
390
|
+
|
|
391
|
+
- Updated `CLAUDE.md` - Changed policy from "NEVER EDIT COMMITTED" to "NEVER EDIT PUSHED"
|
|
392
|
+
- Created `STAGED_CHANGES_SUMMARY.md` - Comprehensive v3.9.0 change summary
|
|
393
|
+
- Created `NEW_TOOL_DESCRIPTION.md` - Suggest tool reference
|
|
394
|
+
|
|
395
|
+
### Performance
|
|
396
|
+
|
|
397
|
+
- Enhanced file pruning logic (`src/utils/file-pruning.ts`)
|
|
398
|
+
- Improved VCS adapter file status tracking (`src/utils/vcs-adapter.ts`)
|
|
399
|
+
- Better task stale detection (`src/utils/task-stale-detection.ts`)
|
|
400
|
+
- Activity logging enhancements for suggestion tracking
|
|
401
|
+
|
|
402
|
+
### Testing
|
|
403
|
+
|
|
404
|
+
**Test Results:**
|
|
405
|
+
- ✅ **495/495 tests passing (100%)** - Production-ready
|
|
406
|
+
- ✅ Tier 1 (Gentle Nudge): 5/5 tests passing
|
|
407
|
+
- ✅ Tier 2 (Hard Block): 2/2 tests passing
|
|
408
|
+
- ✅ Tier 3 (Auto-Update): 3/3 tests passing
|
|
409
|
+
- ✅ Auto-trigger suggestions: 4/4 tests passing
|
|
410
|
+
- ✅ Edge cases and error handling: All passing
|
|
411
|
+
- ✅ 20/20 cross-database tests passing (MySQL, MariaDB, PostgreSQL)
|
|
412
|
+
- ✅ 7 Docker test suites in separate directory
|
|
413
|
+
|
|
414
|
+
**Test Suite Enhancements:**
|
|
415
|
+
- AI-optimized quiet mode (80-90% token reduction, shows only failures + summary)
|
|
416
|
+
- Verbose mode available with `:verbose` suffix (e.g., `npm run test:verbose`)
|
|
417
|
+
- Cross-platform filter script (`scripts/filter-test-output.js`)
|
|
418
|
+
- Comprehensive three-tier similarity detection test coverage
|
|
419
|
+
|
|
420
|
+
**Coverage:**
|
|
421
|
+
- Overall: 64.85% line coverage
|
|
422
|
+
- All critical paths tested
|
|
423
|
+
- Zero flaky tests
|
|
424
|
+
|
|
425
|
+
### Migration Notes
|
|
426
|
+
|
|
427
|
+
**Backward Compatibility:**
|
|
428
|
+
- v3.9.0 is fully backward compatible with v3.8.x
|
|
429
|
+
- No breaking changes
|
|
430
|
+
- Automatic migration on server startup
|
|
431
|
+
|
|
432
|
+
**Database Changes:**
|
|
433
|
+
- 3 new enhancement migrations (all idempotent)
|
|
434
|
+
- Schema changes apply automatically
|
|
435
|
+
- Safe to rollback by restoring backup
|
|
436
|
+
|
|
437
|
+
**Files Changed:**
|
|
438
|
+
- 50 files modified
|
|
439
|
+
- 1,857 insertions, 2,096 deletions
|
|
440
|
+
- Net: -239 lines (code reduction through refactoring)
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
## [3.8.1] - 2025-11-11
|
|
445
|
+
|
|
446
|
+
### Fixed
|
|
447
|
+
|
|
448
|
+
**Critical Installation Bug**
|
|
449
|
+
|
|
450
|
+
- Fixed `npm error Invalid Version:` error when installing sqlew@3.8.0
|
|
451
|
+
- Changed `@modelcontextprotocol/sdk` dependency from `"latest"` to `"^1.21.1"` in package.json
|
|
452
|
+
- The `"latest"` tag is not a valid semver version for published packages and caused npm dependency resolution to fail
|
|
453
|
+
- This is a **hotfix release** that resolves installation issues preventing users from using v3.8.0
|
|
454
|
+
|
|
455
|
+
**Impact:**
|
|
456
|
+
- All users experiencing `Invalid Version:` errors when running `npx sqlew` can now install successfully
|
|
457
|
+
- No functional changes from v3.8.0 - only dependency version fix
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
## [3.8.0] - 2025-11-09
|
|
462
|
+
|
|
463
|
+
### BREAKING CHANGES
|
|
464
|
+
|
|
465
|
+
**Batch Action Naming Standardization**
|
|
466
|
+
|
|
467
|
+
`task.batch_create` has been renamed to `task.create_batch` to follow the `<verb>_batch` naming pattern used by other batch actions (`set_batch`, `record_batch`).
|
|
468
|
+
|
|
469
|
+
**Migration Required:**
|
|
470
|
+
```typescript
|
|
471
|
+
// ❌ Old (v3.7.x and earlier)
|
|
472
|
+
task({ action: "batch_create", tasks: [...] })
|
|
473
|
+
|
|
474
|
+
// ✅ New (v3.8.0+)
|
|
475
|
+
task({ action: "create_batch", tasks: [...] })
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
**Rationale:**
|
|
479
|
+
- Achieves 100% consistency across all batch actions
|
|
480
|
+
- Improves alphabetical sorting in IDE auto-completion (create → create_batch)
|
|
481
|
+
- Aligns with industry standard (REST APIs, GraphQL, ORMs use suffix pattern)
|
|
482
|
+
- See docs/ADR-batch-naming-standard.md for full justification
|
|
483
|
+
|
|
484
|
+
**Impact:**
|
|
485
|
+
- All code using `task.batch_create` must update to `task.create_batch`
|
|
486
|
+
- Simple find-replace migration (estimated 2-5 minutes per integration)
|
|
487
|
+
- No database schema changes required
|
|
488
|
+
|
|
489
|
+
### Removed
|
|
490
|
+
|
|
491
|
+
**Config Tool Removed (Phase 6)**
|
|
492
|
+
|
|
493
|
+
The orphaned config tool has been removed in favor of CLI-only configuration:
|
|
494
|
+
|
|
495
|
+
- **Deleted**: `src/tools/config.ts` (307 lines)
|
|
496
|
+
- **Removed**: `ConfigAction` type from `src/types.ts` and `src/types/actions.ts`
|
|
497
|
+
- **Removed**: ConfigAction import from `src/utils/parameter-validator.ts`
|
|
498
|
+
- **Updated**: README.md with CLI-only config approach documentation
|
|
499
|
+
- **Updated**: docs/CONFIGURATION.md already documented config tool removal
|
|
500
|
+
|
|
501
|
+
**Why removed:**
|
|
502
|
+
- Config tool was never registered in `tool-registry.ts` (orphaned code)
|
|
503
|
+
- Messaging system deprecated (primary use case eliminated)
|
|
504
|
+
- File-based configuration (`.sqlew/config.toml`) is clearer and more maintainable
|
|
505
|
+
- Runtime updates were confusing (changes lost on restart unless manually synced to file)
|
|
506
|
+
- Configuration drift between `m_config` table and config file
|
|
507
|
+
|
|
508
|
+
**Migration Path:**
|
|
509
|
+
- ✅ **Use `.sqlew/config.toml`** for all configuration (persistent, version-controlled)
|
|
510
|
+
- ✅ **Use CLI arguments** for one-time overrides (`--autodelete-message-hours=48`)
|
|
511
|
+
- ✅ **Internal config operations** preserved (`src/database/config/config-ops.ts`)
|
|
512
|
+
- ✅ **m_config table** preserved (used internally by retention logic)
|
|
513
|
+
|
|
514
|
+
**Impact:**
|
|
515
|
+
- Cleaner codebase with ~300 lines removed
|
|
516
|
+
- No functional impact - tool was never registered
|
|
517
|
+
- Configuration via file and CLI arguments only
|
|
518
|
+
|
|
519
|
+
**Message Tool Completely Removed**
|
|
520
|
+
|
|
521
|
+
The deprecated message tool has been completely removed from the codebase:
|
|
522
|
+
|
|
523
|
+
- **Deleted**: `src/tools/messaging.ts` (599 lines)
|
|
524
|
+
- **Removed**: Message tool entry from `tool-registry.ts`
|
|
525
|
+
- **Removed**: Message tool handler from `tool-handlers.ts`
|
|
526
|
+
- **Removed**: Message imports from `cli.ts`
|
|
527
|
+
- **Updated**: `MessageAction` type changed to `never` (backward compatibility stub)
|
|
528
|
+
- **CLI**: `sqlew query messages` now returns error message
|
|
529
|
+
|
|
530
|
+
**Migration Path**:
|
|
531
|
+
- No action required - messaging system was already marked deprecated in v3.6.6
|
|
532
|
+
- The `t_agent_messages` table was dropped in v3.6.6
|
|
533
|
+
- All message tool actions returned deprecation warnings since v3.6.6
|
|
534
|
+
|
|
535
|
+
**Impact**:
|
|
536
|
+
- Cleaner codebase with ~700 lines removed
|
|
537
|
+
- No functional impact - messaging system was unused
|
|
538
|
+
- MessageAction type remains as deprecated stub for backward compatibility
|
|
539
|
+
|
|
540
|
+
### Added
|
|
541
|
+
|
|
542
|
+
**Layer Expansion (5→9 layers)**
|
|
543
|
+
|
|
544
|
+
Added 4 new layers to enable better task classification and semantic validation:
|
|
545
|
+
|
|
546
|
+
**New FILE_REQUIRED layers:**
|
|
547
|
+
- `documentation` - README, CHANGELOG, API docs, architecture docs (file_actions required)
|
|
548
|
+
|
|
549
|
+
**New FILE_OPTIONAL layers:**
|
|
550
|
+
- `planning` - Research, spike tasks, investigation (file_actions optional)
|
|
551
|
+
- `coordination` - Multi-agent orchestration, task delegation (file_actions optional)
|
|
552
|
+
- `review` - Code review, design review, verification (file_actions optional)
|
|
553
|
+
|
|
554
|
+
**Existing layers** (5→6 FILE_REQUIRED):
|
|
555
|
+
- presentation, business, data, infrastructure, cross-cutting (file_actions required or empty array)
|
|
556
|
+
|
|
557
|
+
**Benefits:**
|
|
558
|
+
- Documentation layer enforces file operations for docs work
|
|
559
|
+
- Planning layers allow pure research tasks without file boilerplate
|
|
560
|
+
- Better semantic task classification across the development lifecycle
|
|
561
|
+
|
|
562
|
+
**file_actions Parameter for Tasks**
|
|
563
|
+
|
|
564
|
+
Introduced semantic `file_actions` parameter to replace generic `watch_files`:
|
|
565
|
+
|
|
566
|
+
```typescript
|
|
567
|
+
// New file_actions parameter
|
|
568
|
+
task.create({
|
|
569
|
+
title: "Implement OAuth",
|
|
570
|
+
layer: "business",
|
|
571
|
+
file_actions: [
|
|
572
|
+
{ action: "create", path: "src/auth/oauth.ts" },
|
|
573
|
+
{ action: "edit", path: "src/api/router.ts" },
|
|
574
|
+
{ action: "delete", path: "src/auth/legacy.ts" }
|
|
575
|
+
]
|
|
576
|
+
});
|
|
577
|
+
|
|
578
|
+
// Backward compatible - watch_files still works
|
|
579
|
+
task.create({
|
|
580
|
+
title: "Update config",
|
|
581
|
+
layer: "infrastructure",
|
|
582
|
+
watch_files: ["config.toml"] // Auto-converts to file_actions
|
|
583
|
+
});
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
**Layer-Based Validation:**
|
|
587
|
+
- FILE_REQUIRED layers (6) → Must provide `file_actions` or `[]`
|
|
588
|
+
- FILE_OPTIONAL layers (3) → Can omit `file_actions` entirely
|
|
589
|
+
- Clear error messages with layer-specific guidance
|
|
590
|
+
|
|
591
|
+
**Benefits:**
|
|
592
|
+
- Self-documenting: `action: 'create'` vs `action: 'edit'` shows intent
|
|
593
|
+
- Prevents forgotten file watchers (validation enforced)
|
|
594
|
+
- No boilerplate for planning tasks (can omit parameter)
|
|
595
|
+
- Better token efficiency with automatic file watching
|
|
596
|
+
|
|
597
|
+
**PostgreSQL Adapter Implementation**
|
|
598
|
+
|
|
599
|
+
Full PostgreSQL 12+ support with complete adapter implementation:
|
|
600
|
+
|
|
601
|
+
**Adapter Features:**
|
|
602
|
+
- All 15 abstract methods implemented (`insertReturning`, `upsert`, `jsonExtract`, etc.)
|
|
603
|
+
- PostgreSQL-specific SQL syntax (RETURNING, ON CONFLICT, string_agg)
|
|
604
|
+
- Strict type handling (TRUE/FALSE for booleans, not 1/0)
|
|
605
|
+
- Timezone-aware timestamp functions
|
|
606
|
+
- Transaction support with savepoints
|
|
607
|
+
|
|
608
|
+
**Migration Compatibility:**
|
|
609
|
+
- All 22 migrations tested and verified on PostgreSQL 16.10
|
|
610
|
+
- Cross-database helper functions for view creation
|
|
611
|
+
- Proper CASCADE handling for foreign key dependencies
|
|
612
|
+
- Sequence management after explicit ID inserts
|
|
613
|
+
- GROUP BY strictness compliance
|
|
614
|
+
|
|
615
|
+
**Supported Databases:**
|
|
616
|
+
- SQLite 3.x (default, development)
|
|
617
|
+
- MySQL 8.0 / MariaDB 10+ (production)
|
|
618
|
+
- PostgreSQL 12+ (production) ✨ NEW
|
|
619
|
+
|
|
620
|
+
**Configuration:**
|
|
621
|
+
```toml
|
|
622
|
+
[database]
|
|
623
|
+
type = "postgres"
|
|
624
|
+
|
|
625
|
+
[database.connection]
|
|
626
|
+
host = "localhost"
|
|
627
|
+
port = 5432
|
|
628
|
+
database = "sqlew_db"
|
|
629
|
+
|
|
630
|
+
[database.auth]
|
|
631
|
+
type = "direct"
|
|
632
|
+
user = "sqlew_user"
|
|
633
|
+
password = "secret"
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### Fixed
|
|
637
|
+
|
|
638
|
+
**Batch Action Parameter Parsing**
|
|
639
|
+
|
|
640
|
+
Fixed MCP client array serialization issue affecting all batch actions:
|
|
641
|
+
|
|
642
|
+
**Problem:** MCP client serializes array parameters as JSON strings:
|
|
643
|
+
```typescript
|
|
644
|
+
// MCP sends:
|
|
645
|
+
decisions: "[{\"key\": \"test\", \"value\": \"val\"}]" // String!
|
|
646
|
+
|
|
647
|
+
// Expected:
|
|
648
|
+
decisions: [{key: "test", value: "val"}] // Array
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
**Solution:** Added JSON parsing in `tool-handlers.ts` for all batch actions:
|
|
652
|
+
- `decision.set_batch` - parse `decisions` parameter
|
|
653
|
+
- `file.record_batch` - parse `file_changes` parameter
|
|
654
|
+
- `task.create_batch` - parse `tasks` parameter
|
|
655
|
+
|
|
656
|
+
**Impact:** All batch actions now work correctly with array parameters from MCP client.
|
|
657
|
+
|
|
658
|
+
**Help System Synchronization**
|
|
659
|
+
|
|
660
|
+
Fixed critical bug where help database was severely out of sync with code:
|
|
661
|
+
|
|
662
|
+
**Problem:** 25 actions missing from `m_help_actions` table, causing help system to lie about available actions.
|
|
663
|
+
|
|
664
|
+
**Missing Actions:**
|
|
665
|
+
- decision: 9 actions (quick_set, search_advanced, set_batch, has_updates, etc.)
|
|
666
|
+
- task: 14 actions (update, get, list, move, link, archive, create_batch, etc.)
|
|
667
|
+
- constraint: 1 action (use_case)
|
|
668
|
+
|
|
669
|
+
**Solution:** Created migration `20251109020000_fix_missing_help_actions_v3_8_0.ts` to:
|
|
670
|
+
- Add all 25 missing actions with correct descriptions
|
|
671
|
+
- Idempotent checks to prevent duplicates
|
|
672
|
+
- Full synchronization between code and database
|
|
673
|
+
|
|
674
|
+
**Impact:** Help system now accurately reports all available actions.
|
|
675
|
+
|
|
676
|
+
### Changed
|
|
677
|
+
|
|
678
|
+
**Tool Registry Schema Fix**
|
|
679
|
+
|
|
680
|
+
Added `additionalProperties: true` to all tool schemas in `tool-registry.ts`:
|
|
681
|
+
|
|
682
|
+
**Problem:** MCP couldn't pass action-specific parameters (key, value, tags, etc.) because schemas only defined `action` property.
|
|
683
|
+
|
|
684
|
+
**Solution:**
|
|
685
|
+
```typescript
|
|
686
|
+
{
|
|
687
|
+
name: 'decision',
|
|
688
|
+
inputSchema: {
|
|
689
|
+
type: 'object',
|
|
690
|
+
properties: {
|
|
691
|
+
action: { ... }
|
|
692
|
+
},
|
|
693
|
+
required: ['action'],
|
|
694
|
+
additionalProperties: true, // ← CRITICAL FIX
|
|
695
|
+
},
|
|
696
|
+
}
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
**Impact:** All MCP tools now accept action-specific parameters correctly.
|
|
700
|
+
|
|
701
|
+
---
|
|
702
|
+
|
|
703
|
+
## [3.7.4] - 2025-11-08
|
|
704
|
+
|
|
705
|
+
### Added - Complete JSON Import/Export System
|
|
706
|
+
|
|
707
|
+
**Full-featured data migration system with smart ID remapping and dependency resolution**
|
|
708
|
+
|
|
709
|
+
#### New Features
|
|
710
|
+
|
|
711
|
+
- **db:import CLI Command** - Import project data from JSON exports with automatic ID remapping
|
|
712
|
+
- Smart conflict detection (skip-if-exists, project-name override)
|
|
713
|
+
- Dry-run mode for validation before import
|
|
714
|
+
- Comprehensive error messages with validation details
|
|
715
|
+
- **Topological Sort Algorithm** - Resolves task dependencies during import
|
|
716
|
+
- Circular dependency detection prevents import of invalid dependency graphs
|
|
717
|
+
- BFS-based topological sorting ensures dependencies imported before dependents
|
|
718
|
+
- Preserves all task relationships and blocking constraints
|
|
719
|
+
- **Smart ID Remapping** - Handles complex foreign key relationships
|
|
720
|
+
- Master table merge logic (reuse existing entries by name/path)
|
|
721
|
+
- Transaction table ID translation with bidirectional mapping
|
|
722
|
+
- Junction table relationship preservation
|
|
723
|
+
- Automatic orphan cleanup for invalid references
|
|
724
|
+
|
|
725
|
+
#### Import System Architecture
|
|
726
|
+
|
|
727
|
+
- **4 Core Modules**:
|
|
728
|
+
1. `import.ts` - Main orchestrator with transaction management
|
|
729
|
+
2. `master-tables.ts` - Master table merge logic (m_files, m_tags, m_scopes, etc.)
|
|
730
|
+
3. `topological-sort.ts` - Dependency graph analysis and sorting
|
|
731
|
+
4. `db-import.ts` - CLI command with argument parsing and validation
|
|
732
|
+
|
|
733
|
+
#### Data Migration Strategy
|
|
734
|
+
|
|
735
|
+
- **ID Remapping**: All imported data gets fresh auto-incremented IDs (no ID preservation)
|
|
736
|
+
- **Master Table Deduplication**: Reuse existing entries for agents, tags, scopes, files by name/path
|
|
737
|
+
- **Transaction Atomicity**: All-or-nothing semantics (full rollback on any error)
|
|
738
|
+
- **Project Isolation**: Each import creates independent project with no cross-contamination
|
|
739
|
+
|
|
740
|
+
#### CLI Examples
|
|
741
|
+
|
|
742
|
+
```bash
|
|
743
|
+
# Import project from JSON export
|
|
744
|
+
npx sqlew db:import --source=project-backup.json
|
|
745
|
+
|
|
746
|
+
# Import with custom project name
|
|
747
|
+
npx sqlew db:import --source=data.json --project-name=my-project
|
|
748
|
+
|
|
749
|
+
# Dry-run validation (no actual import)
|
|
750
|
+
npx sqlew db:import --source=data.json --dry-run
|
|
751
|
+
|
|
752
|
+
# Export project for migration
|
|
753
|
+
npx sqlew db:export --project=visualizer --output=visualizer-data.json
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
#### Technical Details
|
|
757
|
+
|
|
758
|
+
- **Batch Inserts** - 10-row batches to avoid SQLite UNION ALL limits
|
|
759
|
+
- **Foreign Key Validation** - Validates all foreign key references before insertion
|
|
760
|
+
- **View Handling** - Temporarily drops/restores views during schema changes
|
|
761
|
+
- **Idempotent Operations** - Safe to retry on failure
|
|
762
|
+
- **Error Recovery** - Detailed error messages with validation guidance
|
|
763
|
+
|
|
764
|
+
#### Use Cases
|
|
765
|
+
|
|
766
|
+
- **Multi-Project Single Database** - Consolidate multiple projects when database creation permissions are limited
|
|
767
|
+
- **Project Sharing** - Share context with team members or between machines
|
|
768
|
+
- **Cross-Database Migration** - Move projects between different databases (different machine, SQLite → MySQL, etc.)
|
|
769
|
+
|
|
770
|
+
**Note**: Import uses `--skip-if-exists=true` by default. This is NOT a backup/restore solution for the same database.
|
|
771
|
+
Use database-level backups (SQLite file copy, MySQL dump) for backup/restore scenarios.
|
|
772
|
+
|
|
773
|
+
#### Impact
|
|
774
|
+
|
|
775
|
+
- ✅ **Complete migration solution** - Export from one database, import to another
|
|
776
|
+
- ✅ **Multi-project support** - Merge multiple project exports into single database
|
|
777
|
+
- ✅ **Permission-friendly** - Works for users who can't create multiple databases
|
|
778
|
+
- ✅ **Data integrity** - Zero data loss, all relationships preserved
|
|
779
|
+
- ✅ **Production ready** - Comprehensive error handling and validation
|
|
780
|
+
- ✅ **Cross-database compatible** - JSON format works across SQLite, MySQL, PostgreSQL
|
|
781
|
+
|
|
782
|
+
---
|
|
783
|
+
|
|
784
|
+
### Fixed - Multi-Project Migration (HOTFIX)
|
|
785
|
+
|
|
786
|
+
**Critical fix for v3.7.0-v3.7.2 migration in multi-project scenarios**
|
|
787
|
+
|
|
788
|
+
#### Problem
|
|
789
|
+
|
|
790
|
+
- Users upgrading from v3.6.10 to v3.7.0+ could end up with duplicate projects
|
|
791
|
+
- Migration 20251104000000 created project #1 with fake name "default-project"
|
|
792
|
+
- Users creating second project manually resulted in namespace conflicts
|
|
793
|
+
|
|
794
|
+
#### Solution
|
|
795
|
+
|
|
796
|
+
- Enhanced migration idempotency checks
|
|
797
|
+
- Improved project consolidation logic
|
|
798
|
+
- Better handling of existing project scenarios
|
|
799
|
+
|
|
800
|
+
#### Impact
|
|
801
|
+
|
|
802
|
+
- ✅ **Safe multi-project migration** - No duplicate projects created
|
|
803
|
+
- ✅ **Backward compatible** - Works for both fresh installs and upgrades
|
|
804
|
+
- ✅ **Data preservation** - All existing data maintained correctly
|
|
805
|
+
|
|
806
|
+
---
|
|
807
|
+
|
|
808
|
+
## [3.7.3] - 2025-11-06
|
|
809
|
+
|
|
810
|
+
### Fixed - Master Tables Namespace Collision Bug
|
|
811
|
+
|
|
812
|
+
**Critical bug fix for incomplete multi-project support in v3.7.0-v3.7.2**
|
|
813
|
+
|
|
814
|
+
#### Problem
|
|
815
|
+
- Master tables (m_files, m_tags, m_scopes) lacked `project_id` columns in v3.7.0-v3.7.2
|
|
816
|
+
- This caused **namespace collisions** where identical file paths/tag names/scope names from different projects would conflict
|
|
817
|
+
- Example: "src/index.ts" from ProjectA would collide with ProjectB's "src/index.ts"
|
|
818
|
+
- Users upgrading from v3.6.x would have fake project name "default-project" instead of detected real name
|
|
819
|
+
|
|
820
|
+
#### Solution
|
|
821
|
+
- **20251106000000_fix_master_tables_project_id_v3_7_3.ts** - Comprehensive migration that:
|
|
822
|
+
1. **Data Consolidation** - Detects v3.7.0-v3.7.2 upgrade scenario and consolidates project #2 data into project #1
|
|
823
|
+
2. **Project Rename** - Renames fake "default-project" to real detected name (from config.toml/git remote/directory)
|
|
824
|
+
3. **Schema Fix** - Adds `project_id` column to m_files, m_tags, m_scopes with composite UNIQUE constraints
|
|
825
|
+
4. **Data Migration** - Maps all existing master table data to default project (ID 1)
|
|
826
|
+
5. **Orphan Cleanup** - Filters out 95 orphaned foreign key references (deleted tasks/tags)
|
|
827
|
+
6. **View Restoration** - Temporarily drops and restores 4 views during migration
|
|
828
|
+
7. **Table Restoration** - Backs up and restores 6 referencing tables with updated foreign keys
|
|
829
|
+
|
|
830
|
+
#### Migration Details
|
|
831
|
+
- **Idempotent** - Can run multiple times safely (checks for existing columns)
|
|
832
|
+
- **Version-Aware** - Only consolidates data for v3.7.0-v3.7.2 databases (detects fake project names)
|
|
833
|
+
- **Batch Inserts** - Uses 10-row batches to avoid SQLite UNION ALL limits
|
|
834
|
+
- **FK Filtering** - Validates foreign key references before restoration to prevent constraint errors
|
|
835
|
+
- **SQLite-Optimized** - Handles better-sqlite3 FK constraint behavior during table drops
|
|
836
|
+
|
|
837
|
+
#### Technical Changes
|
|
838
|
+
- **m_files**: Added `project_id` column, changed UNIQUE constraint from `(path)` to `(project_id, path)`
|
|
839
|
+
- **m_tags**: Added `project_id` column, changed UNIQUE constraint from `(name)` to `(project_id, name)`
|
|
840
|
+
- **m_scopes**: Added `project_id` column, changed UNIQUE constraint from `(name)` to `(project_id, name)`
|
|
841
|
+
- **Referencing Tables**: Updated t_file_changes, t_task_file_links, t_decision_tags, t_task_tags, t_constraint_tags, t_decision_scopes
|
|
842
|
+
- **Views**: Restored v_layer_summary, v_task_board, v_tagged_decisions, v_tagged_constraints
|
|
843
|
+
|
|
844
|
+
#### Impact
|
|
845
|
+
- ✅ **Fixed namespace collisions** - Files/tags/scopes from different projects can now have identical names
|
|
846
|
+
- ✅ **Data integrity** - All existing data preserved and mapped correctly
|
|
847
|
+
- ✅ **Project consolidation** - v3.7.0-v3.7.2 users get clean migration path
|
|
848
|
+
- ✅ **Real project names** - No more fake "default-project" names
|
|
849
|
+
- ✅ **Orphan cleanup** - Removed invalid foreign key references automatically
|
|
850
|
+
- ✅ **Full idempotency** - Migration can be safely re-run if interrupted
|
|
851
|
+
|
|
852
|
+
#### Testing
|
|
853
|
+
- ✅ Tested on actual v3.7.2 production database (mcp-sqlew project)
|
|
854
|
+
- ✅ Successfully consolidated 77 decisions, 191 tasks, 61 file changes
|
|
855
|
+
- ✅ Filtered 95 orphaned task-tag references
|
|
856
|
+
- ✅ All views and referencing tables restored correctly
|
|
857
|
+
- ✅ Final database state validated with composite UNIQUE constraints working
|
|
858
|
+
|
|
859
|
+
---
|
|
860
|
+
|
|
861
|
+
## [3.7.2] - 2025-11-05
|
|
862
|
+
|
|
863
|
+
### Changed - Enhanced Sub-Agent Templates
|
|
864
|
+
|
|
865
|
+
**Improved specialized agent templates for more efficient sqlew usage**
|
|
866
|
+
|
|
867
|
+
#### Sub-Agent Template Updates
|
|
868
|
+
- **sqlew-scrum-master.md** - Enhanced multi-agent coordination and task management workflows
|
|
869
|
+
- **sqlew-researcher.md** - Improved decision querying and context analysis patterns
|
|
870
|
+
- **sqlew-architect.md** - Enhanced decision documentation and constraint enforcement workflows
|
|
871
|
+
|
|
872
|
+
#### New Documentation
|
|
873
|
+
- Installation and configuration instructions
|
|
874
|
+
- Usage examples for each agent
|
|
875
|
+
- Token optimization guidelines
|
|
876
|
+
- Agent comparison and capability matrix
|
|
877
|
+
- Integration patterns
|
|
878
|
+
- Troubleshooting guide
|
|
879
|
+
|
|
880
|
+
#### SQL Dump Enhancements
|
|
881
|
+
- Added type conversion testing (`src/tests/type-conversion.test.ts`)
|
|
882
|
+
- Enhanced SQL dump converters for better type handling
|
|
883
|
+
- Improved SQL dump utilities with expanded functionality
|
|
884
|
+
|
|
885
|
+
### Fixed - Git LFS PNG Display Issue
|
|
886
|
+
|
|
887
|
+
**Removed Git LFS tracking for PNG files to fix GitHub display**
|
|
888
|
+
|
|
889
|
+
#### Problem
|
|
890
|
+
- PNG files were tracked with Git LFS, causing display issues on GitHub
|
|
891
|
+
- Users without Git LFS saw ASCII pointers instead of images
|
|
892
|
+
- README images were not rendering properly
|
|
893
|
+
|
|
894
|
+
#### Solution
|
|
895
|
+
- Removed `*.png filter=lfs diff=lfs merge=lfs -text` from .gitattributes
|
|
896
|
+
- Restored actual PNG binary files from pre-LFS commits
|
|
897
|
+
- All PNG images now display correctly on GitHub without requiring Git LFS
|
|
898
|
+
|
|
899
|
+
#### Impact
|
|
900
|
+
- ✅ **Better agent templates** - More efficient sqlew usage patterns
|
|
901
|
+
- ✅ **Comprehensive documentation** - Clear installation and usage guides
|
|
902
|
+
- ✅ **Improved type handling** - Better SQL dump type conversion
|
|
903
|
+
- ✅ **Fixed GitHub display** - PNG images now render properly without Git LFS
|
|
904
|
+
- ✅ **Token efficient** - Optimized agent workflows reduce unnecessary tool calls
|
|
905
|
+
|
|
906
|
+
---
|
|
907
|
+
|
|
908
|
+
## [3.7.1] - 2025-11-05
|
|
909
|
+
|
|
910
|
+
### Fixed - Error Message Visibility
|
|
911
|
+
|
|
912
|
+
**Fixed validation error messages being hidden by error wrapper**
|
|
913
|
+
|
|
914
|
+
#### Problem
|
|
915
|
+
- Validation errors (JSON-structured responses) were being wrapped with stack traces
|
|
916
|
+
- Wrong-usage messages were hidden from MCP clients
|
|
917
|
+
- Users received generic error messages instead of helpful validation details
|
|
918
|
+
|
|
919
|
+
#### Solution
|
|
920
|
+
- **Error Handler Enhancement** - Detect and unwrap JSON validation errors
|
|
921
|
+
- Validation errors now returned directly to MCP client without wrapping
|
|
922
|
+
- Stack traces written to logs only (not returned to client)
|
|
923
|
+
- Token-efficient responses without exposing internal stack details
|
|
924
|
+
- **Parameter Validator Enhancement** - Detect unexpected/invalid parameters
|
|
925
|
+
- Added validation for parameters that don't match valid list and have no typo suggestion
|
|
926
|
+
- Improved error messages: "Unexpected params: X. Valid params: Y, Z"
|
|
927
|
+
|
|
928
|
+
#### Impact
|
|
929
|
+
- ✅ **Better UX** - Validation errors are now visible and actionable
|
|
930
|
+
- ✅ **Token efficiency** - No stack traces in MCP responses
|
|
931
|
+
- ✅ **Clearer feedback** - Users see helpful error messages immediately
|
|
932
|
+
- ✅ **Security** - Internal stack details not exposed to clients
|
|
933
|
+
|
|
934
|
+
---
|
|
935
|
+
|
|
936
|
+
## [3.7.0] - 2025-11-05
|
|
937
|
+
|
|
938
|
+
### Added - Runtime Database Reconnection
|
|
939
|
+
|
|
940
|
+
**Automatic connection recovery with exponential backoff retry logic**
|
|
941
|
+
|
|
942
|
+
#### Features
|
|
943
|
+
- **ConnectionManager** - Singleton wrapper for all database operations
|
|
944
|
+
- **Exponential Backoff** - Retry delays: 1s → 2s → 4s → 8s → 16s (31 seconds total)
|
|
945
|
+
- **Smart Error Detection** - Recognizes connection errors across SQLite, MySQL, PostgreSQL
|
|
946
|
+
- **Process.exit on Exhaustion** - Exits cleanly after 5 failed retries
|
|
947
|
+
- **27 Operations Wrapped** - All transactional operations protected:
|
|
948
|
+
- context.ts: 5 operations
|
|
949
|
+
- tasks.ts: 9 operations
|
|
950
|
+
- files.ts: 3 operations
|
|
951
|
+
- constraints.ts: 3 operations
|
|
952
|
+
- config.ts: 2 operations
|
|
953
|
+
- utils.ts: 5 operations
|
|
954
|
+
|
|
955
|
+
#### Connection Error Patterns Detected
|
|
956
|
+
- **Network Errors**: ECONNREFUSED, ENOTFOUND, ETIMEDOUT, ECONNRESET, EPIPE
|
|
957
|
+
- **SQLite**: "database is locked", "unable to open database"
|
|
958
|
+
- **MySQL/MariaDB**: "server has gone away", "lost connection to mysql server"
|
|
959
|
+
- **PostgreSQL**: "connection to server was lost", "could not connect to server"
|
|
960
|
+
- **Knex-specific**: "timeout acquiring a connection", "pool is destroyed"
|
|
961
|
+
|
|
962
|
+
#### Test Coverage
|
|
963
|
+
- **41 tests passing** (22 unit + 19 integration)
|
|
964
|
+
- Retry behavior verification
|
|
965
|
+
- Production scenario simulation (server restart, network failures)
|
|
966
|
+
- Tool integration testing
|
|
967
|
+
|
|
968
|
+
#### Impact
|
|
969
|
+
- ✅ **Resilient operations** - Automatic recovery from transient connection failures
|
|
970
|
+
- ✅ **Production ready** - Handles server restarts, network issues
|
|
971
|
+
- ✅ **Zero regressions** - All existing tests pass
|
|
972
|
+
- ✅ **Token efficient** - No manual retry logic needed in agent code
|
|
973
|
+
|
|
974
|
+
---
|
|
975
|
+
|
|
976
|
+
### Changed - Validation Error Messages
|
|
977
|
+
|
|
978
|
+
**70-85% token reduction in error message size**
|
|
979
|
+
|
|
980
|
+
#### Token Efficiency
|
|
981
|
+
- **Before**: ~1000+ characters (~300+ tokens) with full examples embedded
|
|
982
|
+
- **After**: ~200 characters (~50 tokens) with reference IDs
|
|
983
|
+
- **Reduction**: 70-85% token savings
|
|
984
|
+
|
|
985
|
+
#### New Error Format
|
|
986
|
+
```json
|
|
987
|
+
{
|
|
988
|
+
"error": "Missing: key, value",
|
|
989
|
+
"action": "set",
|
|
990
|
+
"reference": "decision.set",
|
|
991
|
+
"missing": ["key", "value"],
|
|
992
|
+
"hint": "Use 'quick_set' for simpler usage..."
|
|
993
|
+
}
|
|
994
|
+
```
|
|
995
|
+
|
|
996
|
+
#### Features
|
|
997
|
+
- **Reference IDs** - Compact `{tool}.{action}` format (e.g., "decision.set")
|
|
998
|
+
- **Concise Messages** - Essential information only
|
|
999
|
+
- **Conditional Fields** - Only include fields when present
|
|
1000
|
+
- **Self-Documenting** - AI can query `action: "help"` for full docs if needed
|
|
1001
|
+
|
|
1002
|
+
#### Error Types
|
|
1003
|
+
- Missing params: `"Missing: key, value"`
|
|
1004
|
+
- Typos: `"Invalid params: val → value"`
|
|
1005
|
+
- Unknown action: `"Unknown action 'sett'. Did you mean: set?"`
|
|
1006
|
+
|
|
1007
|
+
#### Impact
|
|
1008
|
+
- ✅ **Token efficiency** - 70-85% reduction in error size
|
|
1009
|
+
- ✅ **Cost reduction** - Lower API costs for AI agents
|
|
1010
|
+
- ✅ **Better UX** - Quick, scannable errors
|
|
1011
|
+
- ✅ **Backward compatible** - Error structure unchanged
|
|
1012
|
+
|
|
1013
|
+
---
|
|
1014
|
+
|
|
1015
|
+
### Changed - Debug Log Format
|
|
1016
|
+
|
|
1017
|
+
**Single-line log entries for easier parsing**
|
|
1018
|
+
|
|
1019
|
+
#### Problem
|
|
1020
|
+
Multi-line log messages broke standard text processing tools (grep, awk, log rotation).
|
|
1021
|
+
|
|
1022
|
+
#### Solution
|
|
1023
|
+
- **Sanitization Function** - Replaces newlines with spaces, collapses whitespace
|
|
1024
|
+
- **Applied To**: All log messages, data values, JSON output
|
|
1025
|
+
- **Result**: Every log entry is exactly one line
|
|
1026
|
+
|
|
1027
|
+
#### Benefits
|
|
1028
|
+
- ✅ **Easier parsing** - Line-based tools work correctly
|
|
1029
|
+
- ✅ **Better grep** - Search across entire messages
|
|
1030
|
+
- ✅ **Simpler analysis** - Standard text processing
|
|
1031
|
+
- ✅ **Cleaner output** - No unexpected line breaks
|
|
1032
|
+
|
|
1033
|
+
#### Example
|
|
1034
|
+
**Before:**
|
|
1035
|
+
```
|
|
1036
|
+
[2025-11-05T02:00:00.000Z] [ERROR] Error details:
|
|
1037
|
+
Stack trace line 1
|
|
1038
|
+
Stack trace line 2
|
|
1039
|
+
```
|
|
1040
|
+
|
|
1041
|
+
**After:**
|
|
1042
|
+
```
|
|
1043
|
+
[2025-11-05T02:00:00.000Z] [ERROR] Error details: Stack trace line 1 Stack trace line 2
|
|
1044
|
+
```
|
|
1045
|
+
|
|
1046
|
+
---
|
|
1047
|
+
|
|
1048
|
+
### Changed - Specialized Agent Templates (Error Prevention)
|
|
1049
|
+
|
|
1050
|
+
**Restructured agent templates to reduce tool call errors from 60% to <10%**
|
|
1051
|
+
|
|
1052
|
+
#### Problem
|
|
1053
|
+
- 60% of agent errors: missing `action` parameter in tool calls
|
|
1054
|
+
- Templates embedded outdated action samples that became obsolete
|
|
1055
|
+
- Agents guessed syntax instead of using discovery workflow
|
|
1056
|
+
|
|
1057
|
+
#### Solution
|
|
1058
|
+
All three agent templates restructured with error-prevention focus:
|
|
1059
|
+
- **sqlew-architect.md** - Decision documentation specialist
|
|
1060
|
+
- **sqlew-researcher.md** - Context analysis specialist
|
|
1061
|
+
- **sqlew-scrum-master.md** - Sprint coordination specialist
|
|
1062
|
+
|
|
1063
|
+
#### Key Improvements
|
|
1064
|
+
- ⚠️ **Prominent Error-Prevention Section** - "CRITICAL: Error-Free sqlew Tool Usage" at top
|
|
1065
|
+
- 📚 **Discovery-First Workflow** - Guides agents: `action: "help"` → `action: "example"` → copy/modify
|
|
1066
|
+
- ❌✅ **Zero-Error Pattern** - Clear WRONG/CORRECT examples for every common mistake:
|
|
1067
|
+
- Missing `action` parameter
|
|
1068
|
+
- Wrong data types (priority: string vs number)
|
|
1069
|
+
- Wrong parameter names (old v2.x API)
|
|
1070
|
+
- 🔍 **Pre-Execution Checklist** - Verify `action` parameter before every tool call
|
|
1071
|
+
- 🗑️ **No Embedded Samples** - Removed action lists to prevent outdated syntax
|
|
1072
|
+
- 🛠️ **Common Data Type Errors** - Shows tag arrays, boolean atomics, integer priorities
|
|
1073
|
+
|
|
1074
|
+
#### Upgrade Path
|
|
1075
|
+
**Note**: Existing `.claude/agents/` files NOT auto-upgraded (preserves customizations)
|
|
1076
|
+
|
|
1077
|
+
**Manual upgrade required**:
|
|
1078
|
+
```bash
|
|
1079
|
+
# Remove old templates
|
|
1080
|
+
rm .claude/agents/sqlew-{architect,researcher,scrum-master}.md
|
|
1081
|
+
|
|
1082
|
+
# Restart MCP server (auto-copies new templates from assets/sample-agents/)
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
|
|
1086
|
+
#### Impact
|
|
1087
|
+
- ✅ **Target: 60% → <10% error rate** for agent tool calls
|
|
1088
|
+
- ✅ **Better UX** - Clear guidance prevents common mistakes
|
|
1089
|
+
- ✅ **Self-Correcting** - Agents learn correct patterns from errors
|
|
1090
|
+
- ✅ **Future-Proof** - Discovery workflow adapts to API changes
|
|
1091
|
+
|
|
1092
|
+
---
|
|
1093
|
+
|
|
1094
|
+
### Fixed - Multi-Project Migration (Critical)
|
|
1095
|
+
|
|
1096
|
+
**Fixed migration for ALL users upgrading from v3.6.10 to v3.7.0**
|
|
1097
|
+
|
|
1098
|
+
#### Problem
|
|
1099
|
+
- SQLite's `ALTER TABLE` silently failed for 4 tables with complex foreign keys
|
|
1100
|
+
- Migration reported success but columns weren't added
|
|
1101
|
+
- Task creation would fail: `"table t_task_details has no column named project_id"`
|
|
1102
|
+
|
|
1103
|
+
#### Root Cause
|
|
1104
|
+
SQLite cannot modify tables with `ON DELETE CASCADE` constraints using ALTER TABLE.
|
|
1105
|
+
|
|
1106
|
+
#### Solution
|
|
1107
|
+
- **Table Recreation Strategy** - Backup → Drop → Recreate → Restore
|
|
1108
|
+
- **4 Tables Fixed**:
|
|
1109
|
+
- `t_task_details` (STEP 4.7)
|
|
1110
|
+
- `t_task_file_links` (STEP 4.8)
|
|
1111
|
+
- `t_task_decision_links` (STEP 4.9)
|
|
1112
|
+
- `t_task_tags` (composite PRIMARY KEY)
|
|
1113
|
+
|
|
1114
|
+
#### Idempotency
|
|
1115
|
+
All recreation steps check if `project_id` exists before executing:
|
|
1116
|
+
```typescript
|
|
1117
|
+
const hasProjectId = await knex.schema.hasColumn('table_name', 'project_id');
|
|
1118
|
+
if (!hasProjectId) {
|
|
1119
|
+
// Recreation logic
|
|
1120
|
+
}
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
#### Data Preservation Verified
|
|
1124
|
+
- ✅ 223 task detail rows preserved
|
|
1125
|
+
- ✅ 632 task tag rows preserved
|
|
1126
|
+
- ✅ All task links preserved
|
|
1127
|
+
- ✅ 100% data integrity maintained
|
|
1128
|
+
|
|
1129
|
+
#### Testing
|
|
1130
|
+
- ✅ Fresh installation works
|
|
1131
|
+
- ✅ v3.6.10 → v3.7.0 upgrade works
|
|
1132
|
+
- ✅ Migration can be re-run safely (idempotent)
|
|
1133
|
+
- ✅ TypeScript compiles without errors
|
|
1134
|
+
|
|
1135
|
+
#### Impact
|
|
1136
|
+
- ✅ **Production ready** - Safe for all v3.6.10 users to upgrade
|
|
1137
|
+
- ✅ **No data loss** - All existing data preserved
|
|
1138
|
+
- ✅ **Idempotent** - Can re-run without errors
|
|
1139
|
+
|
|
1140
|
+
---
|
|
1141
|
+
|
|
1142
|
+
## [3.6.10] - 2025-10-30
|
|
1143
|
+
|
|
1144
|
+
### Added - Environment Variable Support for Project Root
|
|
1145
|
+
|
|
1146
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
1147
|
+
|
|
1148
|
+
#### Problem
|
|
1149
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
1150
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
1151
|
+
- No easy way to use project-relative database paths
|
|
1152
|
+
|
|
1153
|
+
#### Solution
|
|
1154
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
1155
|
+
- MCP clients can now pass project directory via environment variable
|
|
1156
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
1157
|
+
|
|
1158
|
+
#### Priority Order
|
|
1159
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
1160
|
+
2. `--db-path` CLI argument (absolute path)
|
|
1161
|
+
3. `--config-path` CLI argument (absolute path)
|
|
1162
|
+
4. `database.path` in config file (absolute path)
|
|
1163
|
+
5. `process.cwd()` fallback
|
|
1164
|
+
|
|
1165
|
+
#### Junie AI Configuration Example
|
|
1166
|
+
```json
|
|
1167
|
+
{
|
|
1168
|
+
"mcpServers": {
|
|
1169
|
+
"sqlew": {
|
|
1170
|
+
"command": "npx",
|
|
1171
|
+
"args": ["sqlew"],
|
|
1172
|
+
"env": {
|
|
1173
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
```
|
|
1179
|
+
|
|
1180
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
1181
|
+
|
|
1182
|
+
#### Impact
|
|
1183
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
1184
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
1185
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
1186
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
1187
|
+
|
|
1188
|
+
---
|
|
1189
|
+
|
|
1190
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
1191
|
+
|
|
1192
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
1193
|
+
|
|
1194
|
+
#### Problem
|
|
1195
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
1196
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
1197
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
1198
|
+
|
|
1199
|
+
#### Changes
|
|
1200
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
1201
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
1202
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
1203
|
+
- `src/database.ts` - Database initialization messages
|
|
1204
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
1205
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
1206
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
1207
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
1208
|
+
|
|
1209
|
+
#### Technical Details
|
|
1210
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
1211
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
1212
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
1213
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
1214
|
+
|
|
1215
|
+
#### Impact
|
|
1216
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
1217
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
1218
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
1219
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
1220
|
+
|
|
1221
|
+
---
|
|
1222
|
+
|
|
1223
|
+
### Added - Environment Variable Support for Project Root
|
|
1224
|
+
|
|
1225
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
1226
|
+
|
|
1227
|
+
#### Problem
|
|
1228
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
1229
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
1230
|
+
- No easy way to use project-relative database paths
|
|
1231
|
+
|
|
1232
|
+
#### Solution
|
|
1233
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
1234
|
+
- MCP clients can now pass project directory via environment variable
|
|
1235
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
1236
|
+
|
|
1237
|
+
#### Priority Order
|
|
1238
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
1239
|
+
2. `--db-path` CLI argument (absolute path)
|
|
1240
|
+
3. `--config-path` CLI argument (absolute path)
|
|
1241
|
+
4. `database.path` in config file (absolute path)
|
|
1242
|
+
5. `process.cwd()` fallback
|
|
1243
|
+
|
|
1244
|
+
#### Junie AI Configuration Example
|
|
1245
|
+
```json
|
|
1246
|
+
{
|
|
1247
|
+
"mcpServers": {
|
|
1248
|
+
"sqlew": {
|
|
1249
|
+
"command": "npx",
|
|
1250
|
+
"args": ["sqlew"],
|
|
1251
|
+
"env": {
|
|
1252
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
}
|
|
1257
|
+
```
|
|
1258
|
+
|
|
1259
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
1260
|
+
|
|
1261
|
+
#### Impact
|
|
1262
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
1263
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
1264
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
1265
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
1266
|
+
|
|
1267
|
+
---
|
|
1268
|
+
|
|
1269
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
1270
|
+
|
|
1271
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
1272
|
+
|
|
1273
|
+
#### Problem
|
|
1274
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
1275
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
1276
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
1277
|
+
|
|
1278
|
+
#### Changes
|
|
1279
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
1280
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
1281
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
1282
|
+
- `src/database.ts` - Database initialization messages
|
|
1283
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
1284
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
1285
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
1286
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
1287
|
+
|
|
1288
|
+
#### Technical Details
|
|
1289
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
1290
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
1291
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
1292
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
1293
|
+
|
|
1294
|
+
#### Impact
|
|
1295
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
1296
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
1297
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
1298
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
1299
|
+
|
|
1300
|
+
---
|
|
1301
|
+
|
|
1302
|
+
### Added - Environment Variable Support for Project Root
|
|
1303
|
+
|
|
1304
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
1305
|
+
|
|
1306
|
+
#### Problem
|
|
1307
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
1308
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
1309
|
+
- No easy way to use project-relative database paths
|
|
1310
|
+
|
|
1311
|
+
#### Solution
|
|
1312
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
1313
|
+
- MCP clients can now pass project directory via environment variable
|
|
1314
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
1315
|
+
|
|
1316
|
+
#### Priority Order
|
|
1317
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
1318
|
+
2. `--db-path` CLI argument (absolute path)
|
|
1319
|
+
3. `--config-path` CLI argument (absolute path)
|
|
1320
|
+
4. `database.path` in config file (absolute path)
|
|
1321
|
+
5. `process.cwd()` fallback
|
|
1322
|
+
|
|
1323
|
+
#### Junie AI Configuration Example
|
|
1324
|
+
```json
|
|
1325
|
+
{
|
|
1326
|
+
"mcpServers": {
|
|
1327
|
+
"sqlew": {
|
|
1328
|
+
"command": "npx",
|
|
1329
|
+
"args": ["sqlew"],
|
|
1330
|
+
"env": {
|
|
1331
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
```
|
|
1337
|
+
|
|
1338
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
1339
|
+
|
|
1340
|
+
#### Impact
|
|
1341
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
1342
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
1343
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
1344
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
1345
|
+
|
|
1346
|
+
---
|
|
1347
|
+
|
|
1348
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
1349
|
+
|
|
1350
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
1351
|
+
|
|
1352
|
+
#### Problem
|
|
1353
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
1354
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
1355
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
1356
|
+
|
|
1357
|
+
#### Changes
|
|
1358
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
1359
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
1360
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
1361
|
+
- `src/database.ts` - Database initialization messages
|
|
1362
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
1363
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
1364
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
1365
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
1366
|
+
|
|
1367
|
+
#### Technical Details
|
|
1368
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
1369
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
1370
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
1371
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
1372
|
+
|
|
1373
|
+
#### Impact
|
|
1374
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
1375
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
1376
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
1377
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
1378
|
+
|
|
1379
|
+
---
|
|
1380
|
+
|
|
1381
|
+
### Added - Environment Variable Support for Project Root
|
|
1382
|
+
|
|
1383
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
1384
|
+
|
|
1385
|
+
#### Problem
|
|
1386
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
1387
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
1388
|
+
- No easy way to use project-relative database paths
|
|
1389
|
+
|
|
1390
|
+
#### Solution
|
|
1391
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
1392
|
+
- MCP clients can now pass project directory via environment variable
|
|
1393
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
1394
|
+
|
|
1395
|
+
#### Priority Order
|
|
1396
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
1397
|
+
2. `--db-path` CLI argument (absolute path)
|
|
1398
|
+
3. `--config-path` CLI argument (absolute path)
|
|
1399
|
+
4. `database.path` in config file (absolute path)
|
|
1400
|
+
5. `process.cwd()` fallback
|
|
1401
|
+
|
|
1402
|
+
#### Junie AI Configuration Example
|
|
1403
|
+
```json
|
|
1404
|
+
{
|
|
1405
|
+
"mcpServers": {
|
|
1406
|
+
"sqlew": {
|
|
1407
|
+
"command": "npx",
|
|
1408
|
+
"args": ["sqlew"],
|
|
1409
|
+
"env": {
|
|
1410
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
```
|
|
1416
|
+
|
|
1417
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
1418
|
+
|
|
1419
|
+
#### Impact
|
|
1420
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
1421
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
1422
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
1423
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
1424
|
+
|
|
1425
|
+
---
|
|
1426
|
+
|
|
1427
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
1428
|
+
|
|
1429
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
1430
|
+
|
|
1431
|
+
#### Problem
|
|
1432
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
1433
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
1434
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
1435
|
+
|
|
1436
|
+
#### Changes
|
|
1437
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
1438
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
1439
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
1440
|
+
- `src/database.ts` - Database initialization messages
|
|
1441
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
1442
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
1443
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
1444
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
1445
|
+
|
|
1446
|
+
#### Technical Details
|
|
1447
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
1448
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
1449
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
1450
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
1451
|
+
|
|
1452
|
+
#### Impact
|
|
1453
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
1454
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
1455
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
1456
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
1457
|
+
|
|
1458
|
+
---
|
|
1459
|
+
|
|
1460
|
+
### Added - Environment Variable Support for Project Root
|
|
1461
|
+
|
|
1462
|
+
**New `SQLEW_PROJECT_ROOT` environment variable for project-relative databases**
|
|
1463
|
+
|
|
1464
|
+
#### Problem
|
|
1465
|
+
- Junie AI and other MCP clients require absolute paths in configuration
|
|
1466
|
+
- Users had to hardcode project-specific paths in MCP server config
|
|
1467
|
+
- No easy way to use project-relative database paths
|
|
1468
|
+
|
|
1469
|
+
#### Solution
|
|
1470
|
+
- Added `SQLEW_PROJECT_ROOT` environment variable support (inspired by serena-mcp pattern)
|
|
1471
|
+
- MCP clients can now pass project directory via environment variable
|
|
1472
|
+
- Database automatically created at `$SQLEW_PROJECT_ROOT/.sqlew/sqlew.db`
|
|
1473
|
+
|
|
1474
|
+
#### Priority Order
|
|
1475
|
+
1. `SQLEW_PROJECT_ROOT` environment variable (NEW - highest priority)
|
|
1476
|
+
2. `--db-path` CLI argument (absolute path)
|
|
1477
|
+
3. `--config-path` CLI argument (absolute path)
|
|
1478
|
+
4. `database.path` in config file (absolute path)
|
|
1479
|
+
5. `process.cwd()` fallback
|
|
1480
|
+
|
|
1481
|
+
#### Junie AI Configuration Example
|
|
1482
|
+
```json
|
|
1483
|
+
{
|
|
1484
|
+
"mcpServers": {
|
|
1485
|
+
"sqlew": {
|
|
1486
|
+
"command": "npx",
|
|
1487
|
+
"args": ["sqlew"],
|
|
1488
|
+
"env": {
|
|
1489
|
+
"SQLEW_PROJECT_ROOT": "{projectDir}"
|
|
1490
|
+
}
|
|
1491
|
+
}
|
|
1492
|
+
}
|
|
1493
|
+
}
|
|
1494
|
+
```
|
|
1495
|
+
|
|
1496
|
+
**Note:** Junie AI uses `{projectDir}` variable which expands to the current project's absolute path. This ensures each project gets its own isolated database without hardcoded paths. Other MCP clients may use different variable names like `${workspaceFolder}` (VS Code/Cline) - check your client's documentation.
|
|
1497
|
+
|
|
1498
|
+
#### Impact
|
|
1499
|
+
- ✅ **Project-relative databases** without hardcoded absolute paths
|
|
1500
|
+
- ✅ **Cleaner MCP configuration** (no per-project path updates needed)
|
|
1501
|
+
- ✅ **Compatible with Junie AI, Claude Desktop, and other MCP clients**
|
|
1502
|
+
- ✅ **No breaking changes** (environment variable is optional)
|
|
1503
|
+
|
|
1504
|
+
---
|
|
1505
|
+
|
|
1506
|
+
### Fixed - MCP Protocol Compliance (EPIPE Fix)
|
|
1507
|
+
|
|
1508
|
+
**Eliminated console output for strict JSON-RPC protocol compliance**
|
|
1509
|
+
|
|
1510
|
+
#### Problem
|
|
1511
|
+
- EPIPE (broken pipe) errors when running with Junie AI on Windows
|
|
1512
|
+
- Console output to stdout/stderr violated MCP JSON-RPC protocol requirements
|
|
1513
|
+
- Strict MCP clients (like Junie AI) expect pure JSON-RPC on stdio streams
|
|
1514
|
+
|
|
1515
|
+
#### Changes
|
|
1516
|
+
- **Redirected all diagnostic output to debug log file** - stdout/stderr reserved exclusively for JSON-RPC
|
|
1517
|
+
- Modified `safeConsoleError()` to write to debug log instead of stderr
|
|
1518
|
+
- Replaced 50+ console.log/console.error calls across codebase:
|
|
1519
|
+
- `src/database.ts` - Database initialization messages
|
|
1520
|
+
- `src/watcher/file-watcher.ts` - File watcher status and events
|
|
1521
|
+
- `src/watcher/gitignore-parser.ts` - .gitignore loading warnings
|
|
1522
|
+
- `src/tools/tasks.ts` - Task file registration warnings
|
|
1523
|
+
- `src/config/example-generator.ts` - First launch messages
|
|
1524
|
+
|
|
1525
|
+
#### Technical Details
|
|
1526
|
+
- **MCP Protocol Requirement**: stdin/stdout/stderr must carry only JSON-RPC messages
|
|
1527
|
+
- **Debug Logging**: All diagnostic messages now use `debugLog()` with appropriate levels (INFO, WARN, ERROR)
|
|
1528
|
+
- **Zero stdout pollution**: Server starts silently, waits for JSON-RPC requests
|
|
1529
|
+
- **Tested with Junie AI**: Confirmed no EPIPE errors on Windows
|
|
1530
|
+
|
|
1531
|
+
#### Impact
|
|
1532
|
+
- ✅ **Works with strict MCP clients** (Junie AI, etc.)
|
|
1533
|
+
- ✅ **Maintains full diagnostics** via debug log file
|
|
1534
|
+
- ✅ **Pure JSON-RPC protocol** compliance
|
|
1535
|
+
- ✅ **No breaking changes** to MCP tool functionality
|
|
1536
|
+
|
|
1537
|
+
---
|
|
1538
|
+
|
|
1539
|
+
### Fixed - Windows Absolute Path Handling
|
|
1540
|
+
|
|
1541
|
+
**Fixed path normalization for Windows environments**
|
|
1542
|
+
|
|
1543
|
+
#### Changes
|
|
1544
|
+
- Fixed absolute path to relative path conversion in `gitignore-parser.ts`
|
|
1545
|
+
- Prevented `uname` Unix command calls on Windows
|
|
1546
|
+
- Resolved "path should be a `path.relative()`d string" error on Windows
|
|
1547
|
+
- Improved cross-platform path handling in file watcher
|
|
1548
|
+
|
|
1549
|
+
#### Technical Details
|
|
1550
|
+
- Enhanced path normalization logic to handle Windows drive letters (`C:/`)
|
|
1551
|
+
- Added proper Windows-specific path handling checks
|
|
1552
|
+
- Fixed compatibility with `ignore` library path requirements
|
|
1553
|
+
|
|
1554
|
+
---
|
|
1555
|
+
|
|
1556
|
+
## [3.6.8] - 2025-10-30
|
|
1557
|
+
|
|
1558
|
+
### Fixed - Windows Environment Compatibility
|
|
1559
|
+
|
|
1560
|
+
**Updated better-sqlite3 for Windows support**
|
|
1561
|
+
|
|
1562
|
+
#### Changes
|
|
1563
|
+
- Updated `better-sqlite3` from `^11.0.0` to `^12.4.1`
|
|
1564
|
+
- Fixes Windows environment compatibility issues
|
|
1565
|
+
- Improves cross-platform stability
|
|
1566
|
+
|
|
1567
|
+
---
|
|
1568
|
+
|
|
1569
|
+
## [3.6.7] - 2025-10-30
|
|
1570
|
+
|
|
1571
|
+
### Fixed - Dependency Update
|
|
1572
|
+
|
|
1573
|
+
**Removed deprecated dependency**
|
|
1574
|
+
|
|
1575
|
+
#### Changes
|
|
1576
|
+
- Removed deprecated dependency to ensure compatibility with latest ecosystem
|
|
1577
|
+
- Maintenance update for long-term stability
|
|
1578
|
+
|
|
1579
|
+
---
|
|
1580
|
+
|
|
1581
|
+
## [3.6.6] - 2025-10-29
|
|
1582
|
+
|
|
1583
|
+
### Added - Parameter Validation & Error Handling
|
|
1584
|
+
|
|
1585
|
+
**Comprehensive parameter validation with helpful error messages**
|
|
1586
|
+
|
|
1587
|
+
#### Parameter Validation
|
|
1588
|
+
- **Required/Optional Detection** - Clear indication of required vs optional parameters
|
|
1589
|
+
- **Typo Suggestions** - Levenshtein distance-based "did you mean" suggestions for mistyped parameters
|
|
1590
|
+
- **Structured Error Messages** - JSON format with examples showing correct usage
|
|
1591
|
+
- **Visual Markers** - Help responses show 🔴 REQUIRED and ⚪ OPTIONAL parameter markers
|
|
1592
|
+
- **Action Specs Registry** - Centralized action specification in `src/utils/action-specs.ts`
|
|
1593
|
+
- **Comprehensive Test Suite** - 49 validation tests across all 5 tools
|
|
1594
|
+
|
|
1595
|
+
### Removed - Config Tool Deprecated
|
|
1596
|
+
|
|
1597
|
+
**Config MCP tool removed in favor of file-based configuration**
|
|
1598
|
+
|
|
1599
|
+
#### Why Removed
|
|
1600
|
+
- Messaging system deprecated (primary use case eliminated)
|
|
1601
|
+
- File-based configuration (`.sqlew/config.toml`) is clearer and more maintainable
|
|
1602
|
+
- Runtime updates caused configuration drift between `m_config` table and config file
|
|
1603
|
+
- Confusing UX (changes lost on restart unless manually synced)
|
|
1604
|
+
|
|
1605
|
+
#### Migration Path
|
|
1606
|
+
- ✅ Use `.sqlew/config.toml` for all configuration (persistent, version-controlled)
|
|
1607
|
+
- ✅ Use CLI arguments for one-time overrides
|
|
1608
|
+
- ❌ Do not use `config` tool (will error)
|
|
1609
|
+
|
|
1610
|
+
#### Impact
|
|
1611
|
+
- ✅ 5 MCP tools (down from 6): `decision`, `task`, `file`, `constraint`, `stats`
|
|
1612
|
+
- ✅ Clearer configuration workflow (single source of truth)
|
|
1613
|
+
- ✅ Better developer experience (validation errors with examples)
|
|
1614
|
+
- ✅ Reduced cognitive load (no config drift issues)
|
|
1615
|
+
|
|
1616
|
+
---
|
|
1617
|
+
|
|
1618
|
+
## [3.6.5] - 2025-10-28
|
|
1619
|
+
|
|
1620
|
+
### Changed - Agent System Simplification & CI/CD Fix
|
|
1621
|
+
|
|
1622
|
+
**Removed messaging system and eliminated agent pooling complexity**
|
|
1623
|
+
|
|
1624
|
+
#### Agent System Cleanup
|
|
1625
|
+
- **Removed messaging system** - `t_agent_messages` table dropped, `message` MCP tool deprecated
|
|
1626
|
+
- Messaging system was unused and added unnecessary complexity
|
|
1627
|
+
- Simplified agent architecture to single-purpose registry
|
|
1628
|
+
- **Eliminated agent pooling** - Code no longer uses `in_use` and `is_reusable` columns
|
|
1629
|
+
- Removed race conditions and UNIQUE constraint errors
|
|
1630
|
+
- Each agent name creates one permanent record (no reuse/pooling)
|
|
1631
|
+
- Generic agents (`generic-N`) auto-allocated for empty names
|
|
1632
|
+
- **6 MCP Tools** - Down from 7 (messaging removed)
|
|
1633
|
+
- `decision`, `file`, `constraint`, `stats`, `config`, `task`
|
|
1634
|
+
|
|
1635
|
+
#### Infrastructure
|
|
1636
|
+
- **CI/CD Workflow** - Removed npm publish step from GitHub Actions
|
|
1637
|
+
- npm publish requires 2FA authentication
|
|
1638
|
+
- Publishing must be done manually to prevent workflow failures
|
|
1639
|
+
|
|
1640
|
+
#### Impact
|
|
1641
|
+
- ✅ Simplified agent management (no pooling overhead)
|
|
1642
|
+
- ✅ Reduced complexity (messaging system removed)
|
|
1643
|
+
- ✅ CI/CD workflow no longer fails on npm publish
|
|
1644
|
+
|
|
1645
|
+
---
|
|
1646
|
+
|
|
1647
|
+
## [3.6.4] - 2025-10-28
|
|
1648
|
+
|
|
1649
|
+
### Fixed - WSL Git Add Detection
|
|
1650
|
+
|
|
1651
|
+
**WSL-specific polling workaround for chokidar file watcher**
|
|
1652
|
+
|
|
1653
|
+
#### Changes
|
|
1654
|
+
- **1-second polling for WSL** - Added platform-specific chokidar configuration
|
|
1655
|
+
- WSL filesystem events are unreliable with native watching
|
|
1656
|
+
- Polling ensures git add operations are detected consistently
|
|
1657
|
+
- **Platform detection** - Automatic WSL detection via `/proc/version`
|
|
1658
|
+
- **Backward compatible** - Non-WSL platforms use native file watching (no polling)
|
|
1659
|
+
|
|
1660
|
+
#### Impact
|
|
1661
|
+
- ✅ Git add detection now works reliably on WSL
|
|
1662
|
+
- ✅ VCS-aware auto-complete functional across all platforms
|
|
1663
|
+
|
|
1664
|
+
---
|
|
1665
|
+
|
|
1666
|
+
## [3.6.3] - 2025-10-27
|
|
1667
|
+
|
|
1668
|
+
### Fixed - Critical Bug Fixes & Git Add Detection
|
|
1669
|
+
|
|
1670
|
+
**Transaction pool exhaustion and VCS-aware auto-complete implementation**
|
|
1671
|
+
|
|
1672
|
+
#### Bug Fixes
|
|
1673
|
+
- **Task Move Transaction Bug** - Fixed `moveTask` using base `knex` instead of transaction `trx` (line 880)
|
|
1674
|
+
- Caused "Knex: Timeout acquiring a connection" errors
|
|
1675
|
+
- Now properly uses transaction object for `logTaskStatusChange`
|
|
1676
|
+
- **Task Link Transaction Bug** - Fixed `linkTask` using base `knex` instead of transaction `trx` (line 948)
|
|
1677
|
+
- Same connection pool exhaustion issue
|
|
1678
|
+
- Now properly uses transaction object for decision link insertion
|
|
1679
|
+
|
|
1680
|
+
#### Features
|
|
1681
|
+
- **Git Add Detection** - Implemented `detectAndCompleteOnStaging()` for VCS-aware workflow
|
|
1682
|
+
- Detects `git add` operations and auto-completes tasks (`waiting_review` → `done`)
|
|
1683
|
+
- Supports Git, Mercurial, and SVN
|
|
1684
|
+
- Configurable via `git_auto_complete_on_stage` and `require_all_files_staged`
|
|
1685
|
+
- **VCS Configuration** - Added comprehensive settings documentation to `config.example.toml`
|
|
1686
|
+
- `git_auto_complete_on_stage` (default: true)
|
|
1687
|
+
- `git_auto_archive_on_commit` (default: true)
|
|
1688
|
+
- `require_all_files_staged` (default: true)
|
|
1689
|
+
- `require_all_files_committed_for_archive` (default: true)
|
|
1690
|
+
|
|
1691
|
+
#### Infrastructure
|
|
1692
|
+
- **Line Ending Fix** - Added `.gitattributes` to enforce LF endings for shell scripts
|
|
1693
|
+
- Prevents CRLF issues in Husky hooks on Windows/WSL
|
|
1694
|
+
- Applies to `*.sh` and `.husky/*` files
|
|
1695
|
+
- **Husky Hooks** - Fixed pre-commit/pre-push hooks (added shebang, normalized line endings)
|
|
1696
|
+
|
|
1697
|
+
#### Impact
|
|
1698
|
+
- ✅ Task operations no longer fail with connection pool timeouts
|
|
1699
|
+
- ✅ Git add detection now functional (was stubbed in v3.5.2)
|
|
1700
|
+
- ✅ Cross-platform compatibility for git hooks (Windows/WSL/Linux/macOS)
|
|
1701
|
+
|
|
1702
|
+
---
|
|
1703
|
+
|
|
1704
|
+
## [3.6.2] - 2025-10-27
|
|
1705
|
+
|
|
1706
|
+
### Changed - Migration System Modernization
|
|
1707
|
+
|
|
1708
|
+
**Simplified to Knex-only migrations with organized directory structure**
|
|
1709
|
+
|
|
1710
|
+
#### Migration System Cleanup
|
|
1711
|
+
- **Removed custom migration system** (14 obsolete files from `src/migrations/`)
|
|
1712
|
+
- **Pure Knex migrations** - Standardized on Knex.js migration framework
|
|
1713
|
+
- **Organized structure** - 22 migrations grouped into 3 logical subdirectories:
|
|
1714
|
+
- `upgrades/` (7 files) - Version upgrade paths (v1.0 → v3.6)
|
|
1715
|
+
- `bootstrap/` (5 files) - Fresh install foundation
|
|
1716
|
+
- `enhancements/` (10 files) - v3.6.0+ feature additions
|
|
1717
|
+
|
|
1718
|
+
#### Testing & CI/CD
|
|
1719
|
+
- **Migration tests updated** - Converted to use Knex migrations exclusively
|
|
1720
|
+
- **Comprehensive test coverage** - 8/9 versions migrate successfully (89% backward compatibility)
|
|
1721
|
+
- **Husky git hooks** - Pre-commit (build + tests), pre-push (migration tests)
|
|
1722
|
+
- **GitHub Actions workflow** - CI/CD pipeline for Node 18.x/20.x
|
|
1723
|
+
|
|
1724
|
+
#### Benefits
|
|
1725
|
+
- **Better maintainability** - Clear organization, standard tooling
|
|
1726
|
+
- **Easier onboarding** - Knex is industry-standard
|
|
1727
|
+
- **Faster development** - 56% time efficiency via parallel execution
|
|
1728
|
+
|
|
1729
|
+
---
|
|
1730
|
+
|
|
1731
|
+
## [3.6.0] - 2025-10-25
|
|
1732
|
+
|
|
1733
|
+
### Added - Help System Optimization
|
|
1734
|
+
|
|
1735
|
+
**Database-driven help system with 60-70% token efficiency improvement**
|
|
1736
|
+
|
|
1737
|
+
#### Key Achievements
|
|
1738
|
+
- **60-70% Token Reduction** - Average help query: ~200 tokens (vs ~2,150 legacy)
|
|
1739
|
+
- **95.8% Schema Reduction** - MCP InputSchemas: 350 tokens (vs 8,400 legacy)
|
|
1740
|
+
- **6 New Help Actions** - Granular queries for actions, parameters, tools, use-cases
|
|
1741
|
+
- **41 Use-Cases** - Comprehensive workflow examples across 6 categories
|
|
1742
|
+
- **100% Test Coverage** - 38/38 tests passing
|
|
1743
|
+
|
|
1744
|
+
#### New MCP Actions (stats tool)
|
|
1745
|
+
- `help_action` - Query single action with parameters and examples
|
|
1746
|
+
- `help_params` - Query parameter list for an action
|
|
1747
|
+
- `help_tool` - Query tool overview + all actions
|
|
1748
|
+
- `help_use_case` - Get single use-case with full workflow
|
|
1749
|
+
- `help_list_use_cases` - List/filter use-cases by category/complexity
|
|
1750
|
+
- `help_next_actions` - Suggest common next actions
|
|
1751
|
+
|
|
1752
|
+
#### Database Schema
|
|
1753
|
+
7 new tables: `m_help_tools`, `m_help_actions`, `m_help_use_case_categories`, `t_help_action_params`, `t_help_action_examples`, `t_help_use_cases`, `t_help_action_sequences`
|
|
1754
|
+
|
|
1755
|
+
#### Migration from v3.5.x
|
|
1756
|
+
- Automatic migration on startup
|
|
1757
|
+
- Backward compatible - all existing MCP actions unchanged
|
|
1758
|
+
- Zero downtime
|
|
1759
|
+
|
|
1760
|
+
---
|
|
1761
|
+
|
|
1762
|
+
## [3.5.2] - 2025-10-24
|
|
1763
|
+
|
|
1764
|
+
### Added - Two-Step Git-Aware Task Workflow
|
|
1765
|
+
|
|
1766
|
+
**Automatic task completion and archiving based on Git staging and committing**
|
|
1767
|
+
|
|
1768
|
+
#### Features
|
|
1769
|
+
- **Step 1 - Staging** (`git add`): `waiting_review` → `done` (work complete)
|
|
1770
|
+
- **Step 2 - Committing** (`git commit`): `done` → `archived` (work finalized)
|
|
1771
|
+
- **VCS Support**: Git, Mercurial, and SVN
|
|
1772
|
+
- **Zero Token Cost**: Fully automated, no manual MCP calls needed
|
|
1773
|
+
|
|
1774
|
+
#### Configuration
|
|
1775
|
+
- `git_auto_complete_on_stage` (default: `'1'`)
|
|
1776
|
+
- `git_auto_archive_on_commit` (default: `'1'`)
|
|
1777
|
+
- `require_all_files_staged` (default: `'1'`)
|
|
1778
|
+
- `require_all_files_committed_for_archive` (default: `'1'`)
|
|
1779
|
+
|
|
1780
|
+
---
|
|
1781
|
+
|
|
1782
|
+
## [3.5.1] - 2025-10-24
|
|
1783
|
+
|
|
1784
|
+
### Fixed - File Watcher WSL Compatibility
|
|
1785
|
+
|
|
1786
|
+
**Upgraded chokidar from v3 to v4 + Fixed path normalization bug**
|
|
1787
|
+
|
|
1788
|
+
#### Changes
|
|
1789
|
+
- **chokidar**: `^3.6.0` → `^4.0.3` (automatic WSL support)
|
|
1790
|
+
- Fixed path normalization: chokidar reports absolute paths, database stores relative
|
|
1791
|
+
- Removed manual WSL detection and polling configuration
|
|
1792
|
+
|
|
1793
|
+
---
|
|
1794
|
+
|
|
1795
|
+
## [3.5.0] - 2025-10-22
|
|
1796
|
+
|
|
1797
|
+
### Added - Non-Existent File Auto-Pruning
|
|
1798
|
+
|
|
1799
|
+
**Automatic removal of non-existent watched files with audit trail**
|
|
1800
|
+
|
|
1801
|
+
#### Features
|
|
1802
|
+
- New table: `t_task_pruned_files` - Audit trail for pruned files
|
|
1803
|
+
- Auto-pruning during `in_progress → waiting_review` transition
|
|
1804
|
+
- Safety check: blocks if ALL files non-existent
|
|
1805
|
+
- New MCP actions: `get_pruned_files`, `link_pruned_file`
|
|
1806
|
+
|
|
1807
|
+
#### Documentation
|
|
1808
|
+
|
|
1809
|
+
---
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
## Older Versions
|
|
1813
|
+
|
|
1814
|
+
For changelog entries **v3.4.1 and older**, see:
|
|
1815
|
+
- [docs/changelogs/CHANGELOG_ARCHIVE_v3.4_and_older.md](docs/changelogs/CHANGELOG_ARCHIVE_v3.4_and_older.md)
|
|
1816
|
+
|
|
1817
|
+
This includes all versions from v1.0.0 through v3.4.1.
|