coding-friend-cli 1.38.2 → 1.38.3

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.
@@ -23,7 +23,12 @@ import { z } from "zod";
23
23
  // src/lib/project-root.ts
24
24
  import { resolve } from "path";
25
25
  function resolveMainRepoRoot(baseDir) {
26
- const gitCommonDir = run("git", ["-C", baseDir, "rev-parse", "--git-common-dir"]);
26
+ const gitCommonDir = run("git", [
27
+ "-C",
28
+ baseDir,
29
+ "rev-parse",
30
+ "--git-common-dir"
31
+ ]);
27
32
  if (!gitCommonDir) {
28
33
  return resolve(baseDir);
29
34
  }
@@ -235,7 +235,7 @@ async function updateCommand(opts) {
235
235
  }
236
236
  let refreshMemoryAfterUpdate = null;
237
237
  if (doCli) {
238
- ({ refreshMemoryAfterUpdate } = await import("./memory-DF7OUOTV.js"));
238
+ ({ refreshMemoryAfterUpdate } = await import("./memory-7GKTQSIW.js"));
239
239
  if (!latestCliVersion) {
240
240
  log.warn("Cannot check latest CLI version from npm.");
241
241
  } else {
@@ -2,11 +2,11 @@ import {
2
2
  checkMemoryMcpHealth,
3
3
  printHealthSection,
4
4
  warnStaleMcpJson
5
- } from "./chunk-ONG4KRYP.js";
5
+ } from "./chunk-VHUU3QDC.js";
6
6
  import {
7
7
  loadConfig,
8
8
  resolveMemoryDir
9
- } from "./chunk-RFNKPAJW.js";
9
+ } from "./chunk-5KHZQCZB.js";
10
10
  import {
11
11
  getMemoryMcpStatus,
12
12
  isMemoryMcpRegistered,
@@ -201,9 +201,7 @@ async function memoryStatusCommand() {
201
201
  `MCP: ${chalk.green("registered")} ${chalk.dim("(user scope)")} ${chalk.yellow('\u26A0 project .mcp.json shadows user-scope server \u2014 run "cf update" to clean up')}`
202
202
  );
203
203
  } else if (mcpStatus.userScope) {
204
- log.info(
205
- `MCP: ${chalk.green("registered")} ${chalk.dim("(user scope)")}`
206
- );
204
+ log.info(`MCP: ${chalk.green("registered")} ${chalk.dim("(user scope)")}`);
207
205
  } else if (mcpStatus.configured && mcpStatus.scope === "local") {
208
206
  log.info(
209
207
  `MCP: ${chalk.yellow("configured")} ${chalk.dim('(local .mcp.json \u2014 run "cf mcp" to migrate to user scope)')}`
@@ -24,33 +24,25 @@ function warnStaleMcpJson() {
24
24
  }
25
25
  const state = detectMemoryMcpState(mcpJson, existsSync);
26
26
  if (state.kind === "stale") {
27
- console.log(
28
- chalk.yellow(`\u26A0 Stale MCP config detected in .mcp.json`)
29
- );
27
+ console.log(chalk.yellow(`\u26A0 Stale MCP config detected in .mcp.json`));
30
28
  console.log(chalk.dim(` Path no longer exists: ${state.path}`));
31
29
  console.log(
32
30
  chalk.dim(
33
31
  ` This project-scope coding-friend-memory entry shadows the global (user-scope) memory server.`
34
32
  )
35
33
  );
36
- console.log(
37
- chalk.dim(` Run "cf update" to remove it automatically.`)
38
- );
34
+ console.log(chalk.dim(` Run "cf update" to remove it automatically.`));
39
35
  console.log();
40
36
  } else if (state.kind === "legacy-valid") {
41
37
  console.log(
42
- chalk.cyan(
43
- `\u2139 .mcp.json has a project-scope coding-friend-memory entry.`
44
- )
38
+ chalk.cyan(`\u2139 .mcp.json has a project-scope coding-friend-memory entry.`)
45
39
  );
46
40
  console.log(
47
41
  chalk.dim(
48
42
  ` This shadows the global (user-scope) memory server (Claude Code precedence: local > project > user).`
49
43
  )
50
44
  );
51
- console.log(
52
- chalk.dim(` Run "cf update" to remove it automatically.`)
53
- );
45
+ console.log(chalk.dim(` Run "cf update" to remove it automatically.`));
54
46
  console.log();
55
47
  }
56
48
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  loadConfig,
3
3
  resolveMemoryDir
4
- } from "./chunk-RFNKPAJW.js";
4
+ } from "./chunk-5KHZQCZB.js";
5
5
  import "./chunk-3WIZA5OZ.js";
6
6
  import "./chunk-EVGXUDX4.js";
7
7
  import "./chunk-5UVDWG5L.js";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-6NXZKAOV.js";
12
12
  import {
13
13
  resolveLearnDir
14
- } from "./chunk-RFNKPAJW.js";
14
+ } from "./chunk-5KHZQCZB.js";
15
15
  import {
16
16
  findStatuslineHookPath,
17
17
  getCurrentAccountEmail,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveLearnDir
3
- } from "./chunk-RFNKPAJW.js";
3
+ } from "./chunk-5KHZQCZB.js";
4
4
  import "./chunk-3WIZA5OZ.js";
5
5
  import {
6
6
  getLibPath
package/dist/index.js CHANGED
@@ -43,14 +43,14 @@ program.name("cf").description(
43
43
  "coding-friend CLI \u2014 host learning docs, setup MCP, init projects"
44
44
  ).version(wantsVersion ? buildVersionString() : pkg.version, "-v, --version");
45
45
  program.command("install").description("Install the Coding Friend plugin into a supported host").option("--user", "Install at user scope (all projects)").option("--global", "Install at user scope (all projects)").option("--project", "Install at project scope (shared via git)").option("--local", "Install at local scope (this machine only)").option("--agent <agent>", "Operate on host agent: claude or codex", "claude").option("--codex", "Alias for --agent codex").action(async (opts) => {
46
- const { installCommand } = await import("./install-3YEPLDMD.js");
46
+ const { installCommand } = await import("./install-LUPE3VTC.js");
47
47
  await installCommand(opts);
48
48
  });
49
49
  program.command("uninstall").description("Uninstall the Coding Friend plugin from a supported host").option("--user", "Uninstall from user scope (all projects)").option("--global", "Uninstall from user scope (all projects)").option("--project", "Uninstall from project scope").option("--local", "Uninstall from local scope").option("--agent <agent>", "Operate on host agent: claude or codex", "claude").option("--codex", "Alias for --agent codex").option(
50
50
  "--remove-marketplace",
51
51
  "Also remove the host marketplace registration"
52
52
  ).action(async (opts) => {
53
- const { uninstallCommand } = await import("./uninstall-MF6FRUBO.js");
53
+ const { uninstallCommand } = await import("./uninstall-QN6527IR.js");
54
54
  await uninstallCommand(opts);
55
55
  });
56
56
  program.command("disable").description("Disable the Coding Friend plugin without uninstalling").option("--user", "Disable at user scope (all projects)").option("--global", "Disable at user scope (all projects)").option("--project", "Disable at project scope").option("--local", "Disable at local scope").option("--agent <agent>", "Operate on host agent: claude or codex", "claude").option("--codex", "Alias for --agent codex").action(async (opts) => {
@@ -65,11 +65,11 @@ program.command("init").description("Initialize coding-friend in current project
65
65
  "--trust-project",
66
66
  "For Codex, mark the current project trusted in ~/.codex/config.toml"
67
67
  ).action(async (opts) => {
68
- const { initCommand } = await import("./init-EMBQJNTT.js");
68
+ const { initCommand } = await import("./init-S2K4CQO2.js");
69
69
  await initCommand(opts);
70
70
  });
71
71
  program.command("config").description("Manage Coding Friend configuration").action(async () => {
72
- const { configCommand } = await import("./config-NG7SICM4.js");
72
+ const { configCommand } = await import("./config-EX3B3HWO.js");
73
73
  await configCommand();
74
74
  });
75
75
  var learn = program.command("learn").description("Manage learning docs \u2014 host as a website or push to git");
@@ -81,25 +81,25 @@ Learn subcommands:
81
81
  learn push [path] Commit and push learning docs (only if learn dir is the git root)`
82
82
  );
83
83
  learn.command("host").description("Build and serve learning docs as a static website").argument("[path]", "path to docs folder").option("-p, --port <port>", "port number", "3333").action(async (path, opts) => {
84
- const { hostCommand } = await import("./host-EV6QIVTI.js");
84
+ const { hostCommand } = await import("./host-VIQ5YI3V.js");
85
85
  await hostCommand(path, opts);
86
86
  });
87
87
  learn.command("push").description("Commit and push learning docs to origin").argument("[path]", "path to docs folder").action(async (path) => {
88
- const { learnPushCommand } = await import("./learn-MC4VDHZH.js");
88
+ const { learnPushCommand } = await import("./learn-A3TP6PLL.js");
89
89
  await learnPushCommand(path);
90
90
  });
91
91
  program.command("host", { hidden: true }).argument("[path]", "path to docs folder").option("-p, --port <port>", "port number", "3333").action(async (path, opts) => {
92
- const { hostCommand } = await import("./host-EV6QIVTI.js");
92
+ const { hostCommand } = await import("./host-VIQ5YI3V.js");
93
93
  await hostCommand(path, opts);
94
94
  });
95
95
  program.command("mcp").description("Setup MCP server for learning docs").action(async () => {
96
- const { mcpCommand } = await import("./mcp-FV6YX3ZT.js");
96
+ const { mcpCommand } = await import("./mcp-QNJTCZMS.js");
97
97
  await mcpCommand();
98
98
  });
99
99
  program.command("mcp-serve").description(
100
100
  "Start the cf-memory MCP server (used internally by npx). When memoryDir is omitted, resolves from CLAUDE_PROJECT_DIR at runtime."
101
101
  ).argument("[memoryDir]", "path to memory directory (optional)").action(async (memoryDir) => {
102
- const { mcpServeCommand } = await import("./mcp-serve-PXREYQRZ.js");
102
+ const { mcpServeCommand } = await import("./mcp-serve-4VP4KDYG.js");
103
103
  await mcpServeCommand(memoryDir);
104
104
  });
105
105
  program.command("mcp-serve-learn").description("Start the learn MCP server (used internally by npx)").argument("<docsDir>", "path to docs directory").action(async (docsDir) => {
@@ -124,15 +124,15 @@ program.command("statusline").description("Setup coding-friend statusline in Cla
124
124
  await statuslineCommand();
125
125
  });
126
126
  program.command("update").description("Update coding-friend plugin, CLI, and statusline").option("--cli", "Update only the CLI (npm package)").option("--plugin", "Update only the host plugin").option("--statusline", "Update only the statusline").option("--user", "Update plugin at user scope (all projects)").option("--global", "Update plugin at user scope (all projects)").option("--project", "Update plugin at project scope").option("--local", "Update plugin at local scope").option("--agent <agent>", "Operate on host agent: claude or codex", "claude").option("--codex", "Alias for --agent codex").action(async (opts) => {
127
- const { updateCommand } = await import("./update-SMWXKJ3R.js");
127
+ const { updateCommand } = await import("./update-ZQG25VOJ.js");
128
128
  await updateCommand(opts);
129
129
  });
130
130
  program.command("status").description("Show comprehensive Coding Friend status").action(async () => {
131
- const { statusCommand } = await import("./status-6HQRVZKR.js");
131
+ const { statusCommand } = await import("./status-RHSL5MBU.js");
132
132
  await statusCommand();
133
133
  });
134
134
  program.command("clean").description("Clean files generated by Coding Friend in docs/").action(async () => {
135
- const { cleanCommand } = await import("./clean-YWEMYDE5.js");
135
+ const { cleanCommand } = await import("./clean-BJSNDUPN.js");
136
136
  await cleanCommand();
137
137
  });
138
138
  var session = program.command("session").description("[beta] Save and load Claude Code sessions across machines");
@@ -147,11 +147,11 @@ session.command("save").description("Save current Claude Code session to sync fo
147
147
  "-s, --session-id <id>",
148
148
  "session UUID to save (default: auto-detect newest)"
149
149
  ).option("-l, --label <label>", "label for this session").action(async (opts) => {
150
- const { sessionSaveCommand } = await import("./session-QK6OZO3X.js");
150
+ const { sessionSaveCommand } = await import("./session-VDGNTICO.js");
151
151
  await sessionSaveCommand(opts);
152
152
  });
153
153
  session.command("load").description("Load a saved session from sync folder").action(async () => {
154
- const { sessionLoadCommand } = await import("./session-QK6OZO3X.js");
154
+ const { sessionLoadCommand } = await import("./session-VDGNTICO.js");
155
155
  await sessionLoadCommand();
156
156
  });
157
157
  var memory = program.command("memory").description("AI memory system \u2014 store and search project knowledge");
@@ -171,43 +171,43 @@ Memory subcommands:
171
171
  memory mcp Show MCP server setup instructions`
172
172
  );
173
173
  memory.command("status").description("Show memory system status").action(async () => {
174
- const { memoryStatusCommand } = await import("./memory-DF7OUOTV.js");
174
+ const { memoryStatusCommand } = await import("./memory-7GKTQSIW.js");
175
175
  await memoryStatusCommand();
176
176
  });
177
177
  memory.command("search").description("Search memories by query").argument("<query>", "search query").action(async (query) => {
178
- const { memorySearchCommand } = await import("./memory-DF7OUOTV.js");
178
+ const { memorySearchCommand } = await import("./memory-7GKTQSIW.js");
179
179
  await memorySearchCommand(query);
180
180
  });
181
181
  memory.command("list").description(
182
182
  "List memories in current project, or all projects with --projects"
183
183
  ).option("--projects", "List all project databases with size and metadata").action(async (opts) => {
184
- const { memoryListCommand } = await import("./memory-DF7OUOTV.js");
184
+ const { memoryListCommand } = await import("./memory-7GKTQSIW.js");
185
185
  await memoryListCommand(opts);
186
186
  });
187
187
  memory.command("init").description(
188
188
  "Initialize memory system \u2014 interactive wizard (first time) or config menu"
189
189
  ).action(async () => {
190
- const { memoryInitCommand } = await import("./memory-DF7OUOTV.js");
190
+ const { memoryInitCommand } = await import("./memory-7GKTQSIW.js");
191
191
  await memoryInitCommand();
192
192
  });
193
193
  memory.command("config").description("Configure memory system settings").action(async () => {
194
- const { memoryConfigCommand } = await import("./memory-DF7OUOTV.js");
194
+ const { memoryConfigCommand } = await import("./memory-7GKTQSIW.js");
195
195
  await memoryConfigCommand();
196
196
  });
197
197
  memory.command("start-daemon").description("Start the memory daemon (Tier 2 \u2014 MiniSearch)").action(async () => {
198
- const { memoryStartDaemonCommand } = await import("./memory-DF7OUOTV.js");
198
+ const { memoryStartDaemonCommand } = await import("./memory-7GKTQSIW.js");
199
199
  await memoryStartDaemonCommand();
200
200
  });
201
201
  memory.command("stop-daemon").description("Stop the memory daemon").action(async () => {
202
- const { memoryStopDaemonCommand } = await import("./memory-DF7OUOTV.js");
202
+ const { memoryStopDaemonCommand } = await import("./memory-7GKTQSIW.js");
203
203
  await memoryStopDaemonCommand();
204
204
  });
205
205
  memory.command("rebuild").description("Rebuild the daemon search index").action(async () => {
206
- const { memoryRebuildCommand } = await import("./memory-DF7OUOTV.js");
206
+ const { memoryRebuildCommand } = await import("./memory-7GKTQSIW.js");
207
207
  await memoryRebuildCommand();
208
208
  });
209
209
  memory.command("mcp").description("Show MCP server setup instructions").action(async () => {
210
- const { memoryMcpCommand } = await import("./memory-DF7OUOTV.js");
210
+ const { memoryMcpCommand } = await import("./memory-7GKTQSIW.js");
211
211
  await memoryMcpCommand();
212
212
  });
213
213
  memory.command("rm").description("Remove a project database").option("--project-id <id>", "Project ID to remove").option("--all", "Remove all project databases").option(
@@ -215,7 +215,7 @@ memory.command("rm").description("Remove a project database").option("--project-
215
215
  "Remove orphaned projects (source dir missing or 0 memories)"
216
216
  ).action(
217
217
  async (opts) => {
218
- const { memoryRmCommand } = await import("./memory-DF7OUOTV.js");
218
+ const { memoryRmCommand } = await import("./memory-7GKTQSIW.js");
219
219
  await memoryRmCommand(opts);
220
220
  }
221
221
  );
@@ -15,9 +15,9 @@ import {
15
15
  ensureMemoryBuilt,
16
16
  isMemoryInitialized,
17
17
  memoryInitWizard
18
- } from "./chunk-CGEMETKQ.js";
19
- import "./chunk-ONG4KRYP.js";
20
- import "./chunk-RFNKPAJW.js";
18
+ } from "./chunk-S4ENKXXC.js";
19
+ import "./chunk-VHUU3QDC.js";
20
+ import "./chunk-5KHZQCZB.js";
21
21
  import {
22
22
  findStatuslineHookPath,
23
23
  getCurrentAccountEmail,
@@ -1214,7 +1214,7 @@ async function initCommand(opts = {}) {
1214
1214
  console.log();
1215
1215
  log.congrats("Setup complete!");
1216
1216
  log.dim(
1217
- "Available commands: /cf-ask, /cf-plan, /cf-design, /cf-fix, /cf-commit, /cf-review, /cf-review-out, /cf-review-in, /cf-ship, /cf-optimize, /cf-scan, /cf-remember, /cf-learn, /cf-teach, /cf-research, /cf-session, /cf-warm, /cf-checkpoint, /cf-checkpoint-from, /cf-help"
1217
+ "Available commands: /cf-ask, /cf-plan, /cf-later-do, /cf-design, /cf-fix, /cf-commit, /cf-review, /cf-review-out, /cf-review-in, /cf-ship, /cf-optimize, /cf-scan, /cf-remember, /cf-learn, /cf-teach, /cf-research, /cf-session, /cf-warm, /cf-checkpoint, /cf-checkpoint-from, /cf-help"
1218
1218
  );
1219
1219
  }
1220
1220
  function initCodexCommand(opts) {
@@ -1292,7 +1292,7 @@ Use Coding Friend skills with Codex's $skill syntax.
1292
1292
 
1293
1293
  ## Skills
1294
1294
 
1295
- $cf-ask, $cf-plan, $cf-review, $cf-review-out, $cf-review-in, $cf-commit, $cf-design, $cf-ship, $cf-fix, $cf-optimize, $cf-scan, $cf-remember, $cf-learn, $cf-teach, $cf-research, $cf-session, $cf-warm, $cf-checkpoint, $cf-checkpoint-from, $cf-help
1295
+ $cf-ask, $cf-plan, $cf-later-do, $cf-review, $cf-review-out, $cf-review-in, $cf-commit, $cf-design, $cf-ship, $cf-fix, $cf-optimize, $cf-scan, $cf-remember, $cf-learn, $cf-teach, $cf-research, $cf-session, $cf-warm, $cf-checkpoint, $cf-checkpoint-from, $cf-help
1296
1296
  `;
1297
1297
  }
1298
1298
  function ensureGitignoreEntry(entry) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getLatestVersion,
3
3
  semverCompare
4
- } from "./chunk-XAYWGZQT.js";
4
+ } from "./chunk-I2DQYPKT.js";
5
5
  import {
6
6
  getInstalledVersion
7
7
  } from "./chunk-ETTZRJ55.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveLearnDir
3
- } from "./chunk-RFNKPAJW.js";
3
+ } from "./chunk-5KHZQCZB.js";
4
4
  import "./chunk-3WIZA5OZ.js";
5
5
  import {
6
6
  commandExists,
@@ -8,18 +8,18 @@ import {
8
8
  import {
9
9
  ensureMemoryBuilt,
10
10
  printMemoryMcpConfig
11
- } from "./chunk-CGEMETKQ.js";
11
+ } from "./chunk-S4ENKXXC.js";
12
12
  import {
13
13
  checkLearnMcpHealth,
14
14
  checkMemoryMcpHealth,
15
15
  detectMemoryMcpState,
16
16
  printHealthSection,
17
17
  warnStaleMcpJson
18
- } from "./chunk-ONG4KRYP.js";
18
+ } from "./chunk-VHUU3QDC.js";
19
19
  import {
20
20
  resolveLearnDir,
21
21
  resolveMemoryDir
22
- } from "./chunk-RFNKPAJW.js";
22
+ } from "./chunk-5KHZQCZB.js";
23
23
  import "./chunk-3WIZA5OZ.js";
24
24
  import {
25
25
  isMemoryMcpRegistered,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveProjectMemoryDir
3
- } from "./chunk-RFNKPAJW.js";
3
+ } from "./chunk-5KHZQCZB.js";
4
4
  import "./chunk-3WIZA5OZ.js";
5
5
  import {
6
6
  getLibPath
@@ -14,9 +14,9 @@ import {
14
14
  memoryStopDaemonCommand,
15
15
  printMemoryMcpConfig,
16
16
  refreshMemoryAfterUpdate
17
- } from "./chunk-CGEMETKQ.js";
18
- import "./chunk-ONG4KRYP.js";
19
- import "./chunk-RFNKPAJW.js";
17
+ } from "./chunk-S4ENKXXC.js";
18
+ import "./chunk-VHUU3QDC.js";
19
+ import "./chunk-5KHZQCZB.js";
20
20
  import "./chunk-3WIZA5OZ.js";
21
21
  import "./chunk-BXSCYGWE.js";
22
22
  import "./chunk-RZRT7NGT.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadConfig
3
- } from "./chunk-RFNKPAJW.js";
3
+ } from "./chunk-5KHZQCZB.js";
4
4
  import "./chunk-3WIZA5OZ.js";
5
5
  import "./chunk-EVGXUDX4.js";
6
6
  import {
@@ -10,18 +10,18 @@ import {
10
10
  import {
11
11
  checkLearnMcpHealth,
12
12
  checkMemoryMcpHealth
13
- } from "./chunk-ONG4KRYP.js";
13
+ } from "./chunk-VHUU3QDC.js";
14
14
  import {
15
15
  resolveLearnDir,
16
16
  resolveMemoryDir,
17
17
  sanitizeRawConfig
18
- } from "./chunk-RFNKPAJW.js";
18
+ } from "./chunk-5KHZQCZB.js";
19
19
  import {
20
20
  getCliVersion,
21
21
  getLatestCliVersion,
22
22
  getLatestVersion,
23
23
  semverCompare
24
- } from "./chunk-XAYWGZQT.js";
24
+ } from "./chunk-I2DQYPKT.js";
25
25
  import {
26
26
  getInstalledVersion
27
27
  } from "./chunk-ETTZRJ55.js";
@@ -164,9 +164,13 @@ async function uninstallCommand(opts = {}) {
164
164
  const migrationResult = removeMemoryMcpEntry();
165
165
  if (migrationResult.removed) {
166
166
  if (migrationResult.fileDeleted) {
167
- log.success("Removed legacy project-scope coding-friend-memory from .mcp.json (file deleted \u2014 was empty).");
167
+ log.success(
168
+ "Removed legacy project-scope coding-friend-memory from .mcp.json (file deleted \u2014 was empty)."
169
+ );
168
170
  } else {
169
- log.success("Removed legacy project-scope coding-friend-memory from .mcp.json");
171
+ log.success(
172
+ "Removed legacy project-scope coding-friend-memory from .mcp.json"
173
+ );
170
174
  }
171
175
  }
172
176
  }
@@ -4,7 +4,7 @@ import {
4
4
  getLatestVersion,
5
5
  semverCompare,
6
6
  updateCommand
7
- } from "./chunk-XAYWGZQT.js";
7
+ } from "./chunk-I2DQYPKT.js";
8
8
  import "./chunk-ETTZRJ55.js";
9
9
  import "./chunk-3WIZA5OZ.js";
10
10
  import "./chunk-667NMPN4.js";
@@ -7,7 +7,7 @@ interface Crumb {
7
7
 
8
8
  export default function Breadcrumbs({ crumbs }: { crumbs: Crumb[] }) {
9
9
  return (
10
- <nav className="mb-4 flex min-w-0 items-center gap-2 whitespace-nowrap text-sm text-slate-500 dark:text-slate-400">
10
+ <nav className="mb-4 flex min-w-0 items-center gap-2 text-sm whitespace-nowrap text-slate-500 dark:text-slate-400">
11
11
  <Link
12
12
  href="/"
13
13
  className="shrink-0 hover:text-amber-600 dark:hover:text-amber-400"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coding-friend-cli",
3
- "version": "1.38.2",
3
+ "version": "1.38.3",
4
4
  "description": "CLI for coding-friend — host learning docs, setup MCP server, initialize projects",
5
5
  "type": "module",
6
6
  "bin": {