agileflow 2.82.3 → 2.82.5

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 ADDED
@@ -0,0 +1,235 @@
1
+ # Changelog
2
+
3
+ All notable changes to AgileFlow will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.82.5] - 2026-01-10
11
+
12
+ ### Fixed
13
+ - Fix version detection to read from config.yaml
14
+
15
+ ## [2.82.4] - 2026-01-10
16
+
17
+ ### Fixed
18
+ - Fix whats-new command to include CHANGELOG.md in installation
19
+
20
+ ## [2.82.3] - 2026-01-09
21
+
22
+ ### Fixed
23
+ - Copy lib directory to .agileflow for script dependencies
24
+
25
+ ## [2.82.2] - 2026-01-09
26
+
27
+ ### Fixed
28
+ - Installer now copies lib/ directory to .agileflow/lib/ for script dependencies
29
+
30
+ ## [2.82.1] - 2026-01-09
31
+
32
+ ### Fixed
33
+ - Fix npm package missing lib directory
34
+
35
+ ## [2.82.0] - 2026-01-09
36
+
37
+ ### Added
38
+ - Multi-agent orchestration patterns with batch, workflow, and choose commands
39
+
40
+ ## [2.81.0] - 2026-01-09
41
+
42
+ ### Added
43
+ - Input validation, damage control refactor, and session merge flow
44
+
45
+ ## [2.80.0] - 2026-01-09
46
+
47
+ ### Added
48
+ - Comprehensive documentation and docs site improvements
49
+
50
+ ## [2.79.0] - 2026-01-09
51
+
52
+ ### Added
53
+ - Damage Control protection, Visual Mode, and self-improving skills
54
+
55
+ ## [2.78.0] - 2026-01-08
56
+
57
+ ### Added
58
+ - Enhanced compact context preservation with damage control hooks
59
+
60
+ ## [2.77.0] - 2026-01-01
61
+
62
+ ### Added
63
+ - Vibrant 256-color palette with enhanced status line
64
+
65
+ ## [2.76.0] - 2026-01-01
66
+
67
+ ### Added
68
+ - Ralph Loop autonomous story processing with Stop hook support
69
+
70
+ ## [2.75.0] - 2026-01-01
71
+
72
+ ### Added
73
+ - Restructure context/research commands into subdirectories with stuck detection
74
+
75
+ ## [2.74.0] - 2025-12-31
76
+
77
+ ### Added
78
+ - Script repair and diagnostics for /configure command
79
+
80
+ ## [2.73.0] - 2025-12-29
81
+
82
+ ### Changed
83
+ - Consolidate scripts in .agileflow/scripts with updated hook paths
84
+
85
+ ## [2.72.0] - 2025-12-29
86
+
87
+ ### Added
88
+ - Move scripts to .agileflow/scripts directory
89
+
90
+ ## [2.71.0] - 2025-12-29
91
+
92
+ ### Added
93
+ - Outdated script detection with upgrade command and 30-day archival default
94
+
95
+ ## [2.70.0] - 2025-12-29
96
+
97
+ ### Fixed
98
+ - Configure script reads version dynamically from installed package
99
+
100
+ ## [2.69.0] - 2025-12-29
101
+
102
+ ### Added
103
+ - Fix configure script to read version dynamically instead of hardcoded
104
+
105
+ ## [2.68.0] - 2025-12-29
106
+
107
+ ### Fixed
108
+ - Remove Stop hook, simplify docs to npx-only installation
109
+
110
+ ## [2.67.0] - 2025-12-29
111
+
112
+ ### Added
113
+ - Simplify installation to npx-only, remove global install recommendation
114
+
115
+ ## [2.66.0] - 2025-12-29
116
+
117
+ ### Added
118
+ - Remove unreliable Stop hook, improve global CLI messaging
119
+
120
+ ## [2.65.0] - 2025-12-29
121
+
122
+ ### Added
123
+ - Improved outdated global CLI messaging and guidance
124
+
125
+ ## [2.64.0] - 2025-12-29
126
+
127
+ ### Changed
128
+ - Fix version detection in welcome script for user projects
129
+
130
+ ## [2.63.0] - 2025-12-27
131
+
132
+ ### Added
133
+ - Per-IDE options for update and uninstall commands
134
+
135
+ ## [2.62.0] - 2025-12-27
136
+
137
+ ### Added
138
+ - Dynamic skill generation with research-driven MCP integration
139
+
140
+ ## [2.61.0] - 2025-12-27
141
+
142
+ ### Fixed
143
+ - Fixed changelog entry formatting and version comparison links
144
+
145
+ ## [2.60.0] - 2025-12-27
146
+
147
+ ### Changed
148
+ - Standardized changelog format with human-readable summaries
149
+
150
+ ## [2.59.0] - 2025-12-27
151
+
152
+ ### Changed
153
+ - Automated CHANGELOG.md updates in release script
154
+
155
+ ## [2.58.0] - 2025-12-27
156
+
157
+ ### Added
158
+ - Auto-update configuration via `/agileflow:configure --enable=autoupdate`
159
+
160
+ ### Fixed
161
+ - Metadata merge for nested `updates` object in configure script
162
+
163
+ ## [2.57.0] - 2025-12-27
164
+
165
+ ### Added
166
+ - Auto-update system with configurable check frequency
167
+ - Update notifications in welcome message and status line
168
+ - Changelog display after updates showing what's new
169
+ - `/agileflow:whats-new` command for viewing full changelog
170
+
171
+ ## [2.56.0] - 2025-12-27
172
+
173
+ ### Added
174
+ - Dynamic IDE discovery with auto-detection from handlers
175
+ - OpenAI Codex CLI now appears in setup IDE selection
176
+
177
+ ### Changed
178
+ - Replaced hardcoded IDE list with dynamic loading from IdeManager
179
+
180
+ ## [2.55.0] - 2025-12-26
181
+
182
+ ### Changed
183
+ - Consolidated code improvements and debugging enhancements
184
+
185
+ ## [2.54.0] - 2025-12-26
186
+
187
+ ### Added
188
+ - Test suites for generators, npm-utils, and version-checker
189
+
190
+ ## [2.53.0] - 2025-12-25
191
+
192
+ ### Added
193
+ - Session manager for parallel session detection
194
+ - Warning when multiple Claude sessions active
195
+
196
+ ## [2.52.0] - 2025-12-24
197
+
198
+ ### Added
199
+ - PreCompact hook for context preservation during compacts
200
+
201
+ ## [2.51.0] - 2025-12-23
202
+
203
+ ### Added
204
+ - OpenAI Codex CLI integration
205
+
206
+ ## [2.50.0] - 2025-12-22
207
+
208
+ ### Added
209
+ - Windsurf and Cursor IDE support
210
+
211
+ ## [2.45.0] - 2025-12-20
212
+
213
+ ### Added
214
+ - Auto-archival system for completed stories
215
+
216
+ ## [2.40.0] - 2025-12-18
217
+
218
+ ### Added
219
+ - Hooks system for event-driven automation
220
+ - Status line integration for Claude Code
221
+
222
+ [Unreleased]: https://github.com/projectquestorg/AgileFlow/compare/v2.60.0...HEAD
223
+ [2.60.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.59.0...v2.60.0
224
+ [2.59.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.58.0...v2.59.0
225
+ [2.58.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.57.0...v2.58.0
226
+ [2.57.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.56.0...v2.57.0
227
+ [2.56.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.55.0...v2.56.0
228
+ [2.55.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.54.0...v2.55.0
229
+ [2.54.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.53.0...v2.54.0
230
+ [2.53.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.52.0...v2.53.0
231
+ [2.52.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.51.0...v2.52.0
232
+ [2.51.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.50.0...v2.51.0
233
+ [2.50.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.45.0...v2.50.0
234
+ [2.45.0]: https://github.com/projectquestorg/AgileFlow/compare/v2.40.0...v2.45.0
235
+ [2.40.0]: https://github.com/projectquestorg/AgileFlow/releases/tag/v2.40.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agileflow",
3
- "version": "2.82.3",
3
+ "version": "2.82.5",
4
4
  "description": "AI-driven agile development system for Claude Code, Cursor, Windsurf, and more",
5
5
  "keywords": [
6
6
  "agile",
@@ -34,7 +34,8 @@
34
34
  "scripts/",
35
35
  "lib/",
36
36
  "LICENSE",
37
- "README.md"
37
+ "README.md",
38
+ "CHANGELOG.md"
38
39
  ],
39
40
  "scripts": {
40
41
  "postinstall": "node tools/postinstall.js",
@@ -46,29 +46,34 @@ function getProjectInfo(rootDir) {
46
46
  };
47
47
 
48
48
  // Get AgileFlow version (check multiple sources in priority order)
49
- // 1. AgileFlow metadata (installed user projects)
50
- // 2. packages/cli/package.json (AgileFlow dev project)
51
- // 3. .agileflow/package.json (fallback)
49
+ // 1. .agileflow/config.yaml (installed user projects - primary source)
50
+ // 2. AgileFlow metadata (installed user projects - legacy)
51
+ // 3. packages/cli/package.json (AgileFlow dev project)
52
52
  try {
53
- const metadataPath = path.join(rootDir, 'docs/00-meta/agileflow-metadata.json');
54
- if (fs.existsSync(metadataPath)) {
55
- const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
56
- info.version = metadata.version || info.version;
53
+ // Primary: .agileflow/config.yaml
54
+ const configPath = path.join(rootDir, '.agileflow', 'config.yaml');
55
+ if (fs.existsSync(configPath)) {
56
+ const content = fs.readFileSync(configPath, 'utf8');
57
+ const versionMatch = content.match(/^version:\s*['"]?([0-9.]+)/m);
58
+ if (versionMatch) {
59
+ info.version = versionMatch[1];
60
+ }
57
61
  } else {
58
- // Dev project: check packages/cli/package.json
59
- const pkg = JSON.parse(
60
- fs.readFileSync(path.join(rootDir, 'packages/cli/package.json'), 'utf8')
61
- );
62
- info.version = pkg.version || info.version;
62
+ // Fallback: metadata or dev project
63
+ const metadataPath = path.join(rootDir, 'docs/00-meta/agileflow-metadata.json');
64
+ if (fs.existsSync(metadataPath)) {
65
+ const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8'));
66
+ info.version = metadata.version || info.version;
67
+ } else {
68
+ // Dev project: check packages/cli/package.json
69
+ const pkg = JSON.parse(
70
+ fs.readFileSync(path.join(rootDir, 'packages/cli/package.json'), 'utf8')
71
+ );
72
+ info.version = pkg.version || info.version;
73
+ }
63
74
  }
64
75
  } catch (e) {
65
- // Fallback: check .agileflow/package.json
66
- try {
67
- const pkg = JSON.parse(
68
- fs.readFileSync(path.join(rootDir, '.agileflow/package.json'), 'utf8')
69
- );
70
- info.version = pkg.version || info.version;
71
- } catch (e2) {}
76
+ // Silently fail - version will remain 'unknown'
72
77
  }
73
78
 
74
79
  // Get git info
@@ -39,14 +39,18 @@ function debugLog(message, data = null) {
39
39
 
40
40
  // Get installed AgileFlow version
41
41
  function getInstalledVersion(rootDir) {
42
- // First check .agileflow/package.json (installed version)
43
- const agileflowPkg = path.join(rootDir, '.agileflow', 'package.json');
44
- const agileflowResult = safeReadJSON(agileflowPkg);
45
- if (agileflowResult.ok && agileflowResult.data?.version) {
46
- return agileflowResult.data.version;
47
- }
48
- if (!agileflowResult.ok && agileflowResult.error) {
49
- debugLog('Error reading .agileflow/package.json', agileflowResult.error);
42
+ // First check .agileflow/config.yaml (installed version)
43
+ try {
44
+ const configPath = path.join(rootDir, '.agileflow', 'config.yaml');
45
+ if (fs.existsSync(configPath)) {
46
+ const content = fs.readFileSync(configPath, 'utf8');
47
+ const versionMatch = content.match(/^version:\s*['"]?([0-9.]+)/m);
48
+ if (versionMatch) {
49
+ return versionMatch[1];
50
+ }
51
+ }
52
+ } catch (err) {
53
+ debugLog('Error reading .agileflow/config.yaml', err.message);
50
54
  }
51
55
 
52
56
  // Fallback: check if this is the AgileFlow dev repo
@@ -50,9 +50,9 @@ Read the AgileFlow CHANGELOG.md:
50
50
  cat .agileflow/CHANGELOG.md 2>/dev/null || echo "Changelog not found"
51
51
  ```
52
52
 
53
- Also check the installed version:
53
+ Also check the installed version from config.yaml:
54
54
  ```bash
55
- cat .agileflow/package.json 2>/dev/null | grep '"version"' || echo "Version unknown"
55
+ cat .agileflow/config.yaml 2>/dev/null | grep 'version:' | head -1 || echo "Version unknown"
56
56
  ```
57
57
 
58
58
  **STEP 2: Parse and display**
@@ -153,6 +153,10 @@ class Installer {
153
153
  spinner.text = 'Installing shared libraries...';
154
154
  await this.installLib(directory, { force: effectiveForce });
155
155
 
156
+ // Copy CHANGELOG.md for /agileflow:whats-new command
157
+ spinner.text = 'Installing changelog...';
158
+ await this.installChangelog(agileflowDir, { force: effectiveForce });
159
+
156
160
  // Create config.yaml
157
161
  spinner.text = 'Creating configuration...';
158
162
  await this.createConfig(agileflowDir, userName, agileflowFolder, { force: effectiveForce });
@@ -599,6 +603,38 @@ class Installer {
599
603
  return counts;
600
604
  }
601
605
 
606
+ /**
607
+ * Copy CHANGELOG.md to .agileflow/ for /agileflow:whats-new command
608
+ * @param {string} agileflowDir - AgileFlow installation directory
609
+ * @param {Object} options - Installation options
610
+ * @param {boolean} options.force - Overwrite existing file
611
+ */
612
+ async installChangelog(agileflowDir, options = {}) {
613
+ const { force = false } = options;
614
+ const changelogSource = path.join(this.packageRoot, 'CHANGELOG.md');
615
+ const changelogDest = path.join(agileflowDir, 'CHANGELOG.md');
616
+
617
+ // Skip if source changelog doesn't exist
618
+ if (!(await fs.pathExists(changelogSource))) {
619
+ return;
620
+ }
621
+
622
+ const destExists = await fs.pathExists(changelogDest);
623
+
624
+ // If destination exists and not forcing, check if identical
625
+ if (destExists && !force) {
626
+ const srcContent = await fs.readFile(changelogSource, 'utf8');
627
+ const destContent = await fs.readFile(changelogDest, 'utf8');
628
+ if (srcContent === destContent) {
629
+ return; // Identical, skip
630
+ }
631
+ // Different content - always update changelog since it's managed by package
632
+ }
633
+
634
+ // Copy the changelog
635
+ await fs.copy(changelogSource, changelogDest);
636
+ }
637
+
602
638
  /**
603
639
  * Install all scripts from packages/cli/scripts/ to .agileflow/scripts/
604
640
  * Copies everything automatically - no manual list to maintain