@sylphx/flow 1.4.0 → 1.4.2

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 CHANGED
@@ -1,5 +1,24 @@
1
1
  # @sylphx/flow
2
2
 
3
+ ## 1.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Add visible deletion output during sync:
8
+ - Show each file being deleted with checkmark
9
+ - Display MCP servers being removed
10
+ - Clear visual feedback of the full sync process
11
+ - Users can now see exactly what's happening
12
+
13
+ ## 1.4.1
14
+
15
+ ### Patch Changes
16
+
17
+ - Fix rules scanning showing all project markdown files:
18
+ - Skip rules scanning for Claude Code (rules embedded in agent files)
19
+ - Only scan when target has explicit rulesFile config
20
+ - Prevent scanning entire project directory
21
+
3
22
  ## 1.4.0
4
23
 
5
24
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylphx/flow",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "AI-powered development workflow automation with autonomous loop mode and smart configuration",
5
5
  "type": "module",
6
6
  "bin": {
@@ -90,15 +90,28 @@ export async function buildSyncManifest(cwd: string, target: Target): Promise<Sy
90
90
  }
91
91
  }
92
92
 
93
- // Rules files - check individual files
94
- const rulesDir = path.dirname(target.config.rulesFile || '');
95
- if (rulesDir && fs.existsSync(path.join(cwd, rulesDir))) {
96
- const files = fs.readdirSync(path.join(cwd, rulesDir), { withFileTypes: true });
97
- const ruleFiles = files
98
- .filter((f) => f.isFile() && f.name.endsWith('.md'))
99
- .map((f) => path.join(cwd, rulesDir, f.name));
100
-
101
- manifest.rules = categorizeFiles(ruleFiles, FLOW_RULES);
93
+ // Rules files - only for targets with separate rules directory
94
+ // Claude Code has rules in agent files, so skip
95
+ if (target.config.rulesFile) {
96
+ const rulesPath = path.join(cwd, target.config.rulesFile);
97
+
98
+ // Check if it's a directory or file
99
+ if (fs.existsSync(rulesPath)) {
100
+ const stat = fs.statSync(rulesPath);
101
+
102
+ if (stat.isDirectory()) {
103
+ // Scan directory for rule files
104
+ const files = fs.readdirSync(rulesPath, { withFileTypes: true });
105
+ const ruleFiles = files
106
+ .filter((f) => f.isFile() && f.name.endsWith('.md'))
107
+ .map((f) => path.join(rulesPath, f.name));
108
+
109
+ manifest.rules = categorizeFiles(ruleFiles, FLOW_RULES);
110
+ } else {
111
+ // Single rules file - check if it matches Flow templates
112
+ manifest.rules = categorizeFiles([rulesPath], FLOW_RULES);
113
+ }
114
+ }
102
115
  }
103
116
 
104
117
  // MCP servers
@@ -370,14 +383,17 @@ export async function executeSyncDelete(
370
383
  let templatesDeleted = 0;
371
384
  let unknownsDeleted = 0;
372
385
 
386
+ console.log(chalk.cyan('\nšŸ—‘ļø Deleting files...\n'));
387
+
373
388
  // Delete Flow templates
374
389
  for (const file of flowFiles) {
375
390
  try {
376
391
  await fs.promises.unlink(file);
392
+ console.log(chalk.dim(` āœ“ Deleted: ${path.basename(file)}`));
377
393
  templatesDeleted++;
378
394
  } catch (error) {
379
395
  if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {
380
- console.warn(chalk.yellow(`⚠ Failed to delete: ${file}`));
396
+ console.warn(chalk.yellow(` ⚠ Failed to delete: ${path.basename(file)}`));
381
397
  }
382
398
  }
383
399
  }
@@ -389,14 +405,17 @@ export async function executeSyncDelete(
389
405
 
390
406
  try {
391
407
  await fs.promises.unlink(file);
408
+ console.log(chalk.dim(` āœ“ Deleted: ${path.basename(file)}`));
392
409
  unknownsDeleted++;
393
410
  } catch (error) {
394
411
  if ((error as NodeJS.ErrnoException).code !== 'ENOENT') {
395
- console.warn(chalk.yellow(`⚠ Failed to delete: ${file}`));
412
+ console.warn(chalk.yellow(` ⚠ Failed to delete: ${path.basename(file)}`));
396
413
  }
397
414
  }
398
415
  }
399
416
 
417
+ console.log('');
418
+
400
419
  return { templates: templatesDeleted, unknowns: unknownsDeleted };
401
420
  }
402
421
 
@@ -438,6 +457,7 @@ export async function removeMCPServers(cwd: string, serversToRemove: string[]):
438
457
  for (const server of serversToRemove) {
439
458
  if (mcpConfig.mcpServers[server]) {
440
459
  delete mcpConfig.mcpServers[server];
460
+ console.log(chalk.dim(` āœ“ Removed MCP: ${server}`));
441
461
  removedCount++;
442
462
  }
443
463
  }