deepflow 0.1.8 → 0.1.10

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.
@@ -9,11 +9,9 @@ Update deepflow to the latest version from npm.
9
9
  npx deepflow@latest
10
10
  ```
11
11
 
12
- 2. When prompted, choose the same installation level you used before (Global or Project).
12
+ 2. The installer auto-detects your existing installation (global or project) and updates it.
13
13
 
14
- 3. The installer will update all commands, skills, agents, and hooks.
15
-
16
- 4. Restart Claude Code to apply changes.
14
+ 3. Restart Claude Code to apply changes.
17
15
 
18
16
  ## What Gets Updated
19
17
 
package/README.md CHANGED
@@ -61,12 +61,14 @@ CONVERSATION
61
61
  │ Creates specs/{name}.md
62
62
 
63
63
  /df:plan
64
+ │ Detects project context/patterns
64
65
  │ Analyzes specs vs codebase
65
66
  │ Creates PLAN.md with tasks
66
67
  │ Renames: feature.md → doing-feature.md
67
68
 
68
69
  /df:execute
69
- Parallel agents per wave
70
+ Follows existing patterns
71
+ │ Parallel agents, file conflicts serialize
70
72
  │ Context-aware (≥50% → checkpoint)
71
73
  │ Atomic commit per task
72
74
 
@@ -84,6 +86,12 @@ specs/
84
86
  done-feature.md → completed, history embedded
85
87
  ```
86
88
 
89
+ ## Works With Any Project
90
+
91
+ **Greenfield:** Everything is new, agents create from scratch.
92
+
93
+ **Ongoing:** Detects existing patterns, follows conventions, integrates with current code.
94
+
87
95
  ## Context-Aware Execution
88
96
 
89
97
  Statusline shows context usage. At ≥50%:
package/bin/install.js CHANGED
@@ -28,8 +28,32 @@ async function main() {
28
28
  console.log(`${c.cyan}deepflow installer${c.reset}`);
29
29
  console.log('');
30
30
 
31
- // Ask for installation level
32
- const level = await askInstallLevel();
31
+ // Detect existing installations
32
+ const globalInstalled = isInstalled(GLOBAL_DIR);
33
+ const projectInstalled = isInstalled(PROJECT_DIR);
34
+
35
+ let level;
36
+
37
+ if (globalInstalled && projectInstalled) {
38
+ // Both installed - ask which to update
39
+ console.log(`${c.yellow}!${c.reset} Found installations in both locations:`);
40
+ console.log(` Global: ${GLOBAL_DIR}`);
41
+ console.log(` Project: ${PROJECT_DIR}`);
42
+ console.log('');
43
+ level = await askInstallLevel('Which do you want to update?');
44
+ } else if (globalInstalled) {
45
+ // Only global - update it
46
+ console.log(`Updating global installation...`);
47
+ level = 'global';
48
+ } else if (projectInstalled) {
49
+ // Only project - update it
50
+ console.log(`Updating project installation...`);
51
+ level = 'project';
52
+ } else {
53
+ // Fresh install - ask
54
+ level = await askInstallLevel('Where do you want to install deepflow?');
55
+ }
56
+
33
57
  const CLAUDE_DIR = level === 'global' ? GLOBAL_DIR : PROJECT_DIR;
34
58
  const levelLabel = level === 'global' ? 'globally' : 'in this project';
35
59
 
@@ -98,8 +122,7 @@ async function main() {
98
122
  log('Version file installed');
99
123
  }
100
124
 
101
- // Clear stale update cache to prevent false warnings
102
- // Cache is always global, so clear it regardless of install level
125
+ // Clear stale update cache
103
126
  const cacheFile = path.join(GLOBAL_DIR, 'cache', 'df-update-check.json');
104
127
  if (fs.existsSync(cacheFile)) {
105
128
  fs.unlinkSync(cacheFile);
@@ -148,6 +171,12 @@ async function main() {
148
171
  console.log('');
149
172
  }
150
173
 
174
+ function isInstalled(claudeDir) {
175
+ // Check if deepflow commands exist
176
+ const commandsDir = path.join(claudeDir, 'commands', 'df');
177
+ return fs.existsSync(commandsDir) && fs.readdirSync(commandsDir).length > 0;
178
+ }
179
+
151
180
  function copyDir(src, dest) {
152
181
  if (!fs.existsSync(src)) return;
153
182
 
@@ -212,8 +241,8 @@ function ask(question) {
212
241
  });
213
242
  }
214
243
 
215
- async function askInstallLevel() {
216
- console.log('Where do you want to install deepflow?');
244
+ async function askInstallLevel(prompt) {
245
+ console.log(prompt);
217
246
  console.log('');
218
247
  console.log(` ${c.cyan}1${c.reset}) Global ${c.dim}(~/.claude/ - available in all projects)${c.reset}`);
219
248
  console.log(` ${c.cyan}2${c.reset}) Project ${c.dim}(./.claude/ - only this project)${c.reset}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deepflow",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Stay in flow state - lightweight spec-driven task orchestration for Claude Code",
5
5
  "keywords": [
6
6
  "claude",