From 6ac5507e4e5bee0e4770d318309d09b6104197b0 Mon Sep 17 00:00:00 2001 From: Rod Boev Date: Tue, 10 Feb 2026 04:39:58 -0500 Subject: [PATCH] fix: address review feedback on statusline-counts.js - Check CLAUDE_MEM_DATA_DIR env var before settings.json (Greptile) - Derive project before DB check for consistent output (Greptile) - Include project in error fallback output (Greptile) - Set executable permission for shebang compatibility (Greptile) --- plugin/scripts/statusline-counts.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) mode change 100644 => 100755 plugin/scripts/statusline-counts.js diff --git a/plugin/scripts/statusline-counts.js b/plugin/scripts/statusline-counts.js old mode 100644 new mode 100755 index 5f2b6ab2..ed199bca --- a/plugin/scripts/statusline-counts.js +++ b/plugin/scripts/statusline-counts.js @@ -23,28 +23,30 @@ import { existsSync, readFileSync } from "fs"; import { homedir } from "os"; import { join, basename } from "path"; +const cwd = process.argv[2] || process.env.CLAUDE_CWD || process.cwd(); +const project = basename(cwd); + try { - // Resolve data directory from settings (supports CLAUDE_MEM_DATA_DIR override) - let dataDir = join(homedir(), ".claude-mem"); - const settingsPath = join(dataDir, "settings.json"); - if (existsSync(settingsPath)) { - try { - const settings = JSON.parse(readFileSync(settingsPath, "utf-8")); - if (settings.CLAUDE_MEM_DATA_DIR) dataDir = settings.CLAUDE_MEM_DATA_DIR; - } catch { /* use default */ } + // Resolve data directory: env var → settings.json → default + let dataDir = process.env.CLAUDE_MEM_DATA_DIR || join(homedir(), ".claude-mem"); + if (!process.env.CLAUDE_MEM_DATA_DIR) { + const settingsPath = join(dataDir, "settings.json"); + if (existsSync(settingsPath)) { + try { + const settings = JSON.parse(readFileSync(settingsPath, "utf-8")); + if (settings.CLAUDE_MEM_DATA_DIR) dataDir = settings.CLAUDE_MEM_DATA_DIR; + } catch { /* use default */ } + } } const dbPath = join(dataDir, "claude-mem.db"); if (!existsSync(dbPath)) { - console.log(JSON.stringify({ observations: 0, prompts: 0, project: "" })); + console.log(JSON.stringify({ observations: 0, prompts: 0, project })); process.exit(0); } const db = new Database(dbPath, { readonly: true }); - const cwd = process.argv[2] || process.env.CLAUDE_CWD || process.cwd(); - const project = basename(cwd); - const obs = db.query("SELECT COUNT(*) as c FROM observations WHERE project = ?").get(project); // user_prompts links to projects through sdk_sessions.content_session_id const prompts = db.query( @@ -55,5 +57,5 @@ try { console.log(JSON.stringify({ observations: obs.c, prompts: prompts.c, project })); db.close(); } catch (e) { - console.log(JSON.stringify({ observations: 0, prompts: 0, error: e.message })); + console.log(JSON.stringify({ observations: 0, prompts: 0, project, error: e.message })); }