claudekit-cli 3.41.0-dev.2 → 3.41.1-dev.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.
Files changed (2) hide show
  1. package/dist/index.js +37 -25
  2. package/package.json +6 -1
package/dist/index.js CHANGED
@@ -57633,7 +57633,7 @@ var package_default;
57633
57633
  var init_package = __esm(() => {
57634
57634
  package_default = {
57635
57635
  name: "claudekit-cli",
57636
- version: "3.41.0-dev.2",
57636
+ version: "3.41.1-dev.1",
57637
57637
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
57638
57638
  type: "module",
57639
57639
  repository: {
@@ -57653,8 +57653,12 @@ var init_package = __esm(() => {
57653
57653
  "dist/ui/"
57654
57654
  ],
57655
57655
  scripts: {
57656
+ tauri: "tauri",
57657
+ "tauri:dev": "tauri dev",
57658
+ "tauri:build": "tauri build",
57656
57659
  dev: "bun run src/index.ts",
57657
57660
  "dashboard:dev": "cd src/ui && bun install --silent && cd ../.. && bun run src/index.ts config ui --dev",
57661
+ "dashboard:tauri": "cd src/ui && bun install --silent && cd ../.. && bun run src/index.ts config ui --dev --no-open --port 3456",
57658
57662
  "ui:build": "cd src/ui && bun install --silent && bun run build",
57659
57663
  "ui:dev": "cd src/ui && bun run dev",
57660
57664
  build: `bun build src/index.ts --outdir dist --target node --external @octokit/rest --external better-sqlite3 && node -e "const fs=require('fs'),f='dist/index.js',c=fs.readFileSync(f,'utf-8');fs.writeFileSync(f,c.replace(/^#!.*\\n\\/\\/ @bun\\n/,''))"`,
@@ -57719,6 +57723,7 @@ var init_package = __esm(() => {
57719
57723
  "@biomejs/biome": "^1.9.4",
57720
57724
  "@semantic-release/changelog": "^6.0.3",
57721
57725
  "@semantic-release/git": "^10.0.1",
57726
+ "@tauri-apps/cli": "^2",
57722
57727
  "@types/better-sqlite3": "^7.6.13",
57723
57728
  "@types/bun": "latest",
57724
57729
  "@types/cli-progress": "^3.11.6",
@@ -93473,7 +93478,10 @@ class SettingsProcessor {
93473
93478
  }
93474
93479
  let transformed = content;
93475
93480
  const rawPrefix = prefix.replace(/"/g, "");
93476
- transformed = transformed.replace(/(node\s+)(?:\.\/)?(\.claude\/[^\s"\\]+)/g, `$1\\"${rawPrefix}/$2\\"`);
93481
+ transformed = transformed.replace(/(node\s+)(?:\.\/)?(\.claude\/[^\s"\\]+)([^"\\]*)/g, (_match, nodePrefix, relativePath, suffix) => {
93482
+ const normalizedRelativePath = relativePath.replace(/\\/g, "/");
93483
+ return rawPrefix === "$CLAUDE_PROJECT_DIR" ? `${nodePrefix}\\"${rawPrefix}\\"/${normalizedRelativePath}${suffix}` : `${nodePrefix}\\"${rawPrefix}/${normalizedRelativePath}\\"${suffix}`;
93484
+ });
93477
93485
  if (rawPrefix.includes("HOME") || rawPrefix.includes("USERPROFILE")) {
93478
93486
  transformed = transformed.replace(/\$CLAUDE_PROJECT_DIR/g, rawPrefix);
93479
93487
  transformed = transformed.replace(/%CLAUDE_PROJECT_DIR%/g, rawPrefix);
@@ -93519,33 +93527,38 @@ class SettingsProcessor {
93519
93527
  fixSingleCommandPath(cmd) {
93520
93528
  if (!cmd.includes(".claude/") && !cmd.includes(".claude\\"))
93521
93529
  return cmd;
93522
- const bareRelativeRe = /^(node\s+)(?:\.\/)?\.claude\//;
93523
- if (bareRelativeRe.test(cmd)) {
93524
- const prefix = this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR";
93525
- return cmd.replace(/^(node\s+)(?:\.\/)?(\.claude\/.+)$/, `$1"${prefix}/$2"`);
93526
- }
93527
- const varOnlyQuotingRe = /^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)"[/\\](.+)$/;
93528
- const varOnlyMatch = cmd.match(varOnlyQuotingRe);
93529
- if (varOnlyMatch) {
93530
- const [, nodePrefix, capturedVar, restPath] = varOnlyMatch;
93531
- const canonicalVar = this.canonicalizePathVar(capturedVar);
93532
- return `${nodePrefix}"${canonicalVar}/${restPath.replace(/\\/g, "/")}"`;
93533
- }
93534
- const tildeRe = /^(node\s+)~[/\\](.+)$/;
93535
- const tildeMatch = cmd.match(tildeRe);
93530
+ const bareRelativeMatch = cmd.match(/^(node\s+)(?:\.\/)?(\.claude[/\\][^\s"]+)(.*)$/);
93531
+ if (bareRelativeMatch) {
93532
+ const [, nodePrefix, relativePath, suffix] = bareRelativeMatch;
93533
+ return this.formatCommandPath(nodePrefix, this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR", relativePath, suffix);
93534
+ }
93535
+ const embeddedQuotedMatch = cmd.match(/^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](\.claude[/\\][^"]+)"(.*)$/);
93536
+ if (embeddedQuotedMatch) {
93537
+ const [, nodePrefix, capturedVar, relativePath, suffix] = embeddedQuotedMatch;
93538
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93539
+ }
93540
+ const varOnlyQuotedMatch = cmd.match(/^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)"[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93541
+ if (varOnlyQuotedMatch) {
93542
+ const [, nodePrefix, capturedVar, relativePath, suffix] = varOnlyQuotedMatch;
93543
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93544
+ }
93545
+ const tildeMatch = cmd.match(/^(node\s+)~[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93536
93546
  if (tildeMatch) {
93537
- const [, nodePrefix, restPath] = tildeMatch;
93538
- return `${nodePrefix}"$HOME/${restPath.replace(/\\/g, "/")}"`;
93547
+ const [, nodePrefix, relativePath, suffix] = tildeMatch;
93548
+ return this.formatCommandPath(nodePrefix, "$HOME", relativePath, suffix);
93539
93549
  }
93540
- const unquotedRe = /^(node\s+)(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](.+)$/;
93541
- const unquotedMatch = cmd.match(unquotedRe);
93550
+ const unquotedMatch = cmd.match(/^(node\s+)(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93542
93551
  if (unquotedMatch) {
93543
- const [, nodePrefix, capturedVar, restPath] = unquotedMatch;
93544
- const canonicalVar = this.canonicalizePathVar(capturedVar);
93545
- return `${nodePrefix}"${canonicalVar}/${restPath.replace(/\\/g, "/")}"`;
93552
+ const [, nodePrefix, capturedVar, relativePath, suffix] = unquotedMatch;
93553
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93546
93554
  }
93547
93555
  return cmd;
93548
93556
  }
93557
+ formatCommandPath(nodePrefix, capturedVar, relativePath, suffix = "") {
93558
+ const canonicalVar = this.canonicalizePathVar(capturedVar);
93559
+ const normalizedRelativePath = relativePath.replace(/\\/g, "/").replace(/^\/+/, "");
93560
+ return canonicalVar === "$CLAUDE_PROJECT_DIR" ? `${nodePrefix}"${canonicalVar}"/${normalizedRelativePath}${suffix}` : `${nodePrefix}"${canonicalVar}/${normalizedRelativePath}"${suffix}`;
93561
+ }
93549
93562
  canonicalizePathVar(capturedVar) {
93550
93563
  switch (capturedVar) {
93551
93564
  case "%USERPROFILE%":
@@ -93594,7 +93607,6 @@ class SettingsProcessor {
93594
93607
  logger.warning("Failed to read settings file for team hooks injection");
93595
93608
  return;
93596
93609
  }
93597
- const prefix = this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR";
93598
93610
  if (!settings.hooks) {
93599
93611
  settings.hooks = {};
93600
93612
  }
@@ -93605,7 +93617,7 @@ class SettingsProcessor {
93605
93617
  { event: "TeammateIdle", handler: "teammate-idle-handler.cjs" }
93606
93618
  ];
93607
93619
  for (const { event, handler } of teamHooks) {
93608
- const hookCommand = `node "${prefix}/.claude/hooks/${handler}"`;
93620
+ const hookCommand = this.formatCommandPath("node ", this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR", `.claude/hooks/${handler}`);
93609
93621
  const eventHooks = settings.hooks[event];
93610
93622
  if (eventHooks && eventHooks.length > 0)
93611
93623
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudekit-cli",
3
- "version": "3.41.0-dev.2",
3
+ "version": "3.41.1-dev.1",
4
4
  "description": "CLI tool for bootstrapping and updating ClaudeKit projects",
5
5
  "type": "module",
6
6
  "repository": {
@@ -20,8 +20,12 @@
20
20
  "dist/ui/"
21
21
  ],
22
22
  "scripts": {
23
+ "tauri": "tauri",
24
+ "tauri:dev": "tauri dev",
25
+ "tauri:build": "tauri build",
23
26
  "dev": "bun run src/index.ts",
24
27
  "dashboard:dev": "cd src/ui && bun install --silent && cd ../.. && bun run src/index.ts config ui --dev",
28
+ "dashboard:tauri": "cd src/ui && bun install --silent && cd ../.. && bun run src/index.ts config ui --dev --no-open --port 3456",
25
29
  "ui:build": "cd src/ui && bun install --silent && bun run build",
26
30
  "ui:dev": "cd src/ui && bun run dev",
27
31
  "build": "bun build src/index.ts --outdir dist --target node --external @octokit/rest --external better-sqlite3 && node -e \"const fs=require('fs'),f='dist/index.js',c=fs.readFileSync(f,'utf-8');fs.writeFileSync(f,c.replace(/^#!.*\\n\\/\\/ @bun\\n/,''))\"",
@@ -86,6 +90,7 @@
86
90
  "@biomejs/biome": "^1.9.4",
87
91
  "@semantic-release/changelog": "^6.0.3",
88
92
  "@semantic-release/git": "^10.0.1",
93
+ "@tauri-apps/cli": "^2",
89
94
  "@types/better-sqlite3": "^7.6.13",
90
95
  "@types/bun": "latest",
91
96
  "@types/cli-progress": "^3.11.6",