Taste learning silently finds 0 Claude Code sessions when the project path contains spaces (encodeAgentProjectDir mismatch)

Abierto
#849 1 comentario 0 reacciones 1 asignado Ver en GitHub

@saqibameen ya está trabajando en esto.

Desde el 16/9/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

Summary

Taste onboarding and /learn-taste silently learn zero Claude Code sessions when the project path contains spaces (e.g. .../My Repository/My Works/Startup/WUP). encodeAgentProjectDir() only replaces /, \ and : with -, while Claude Code encodes project directories by replacing every non-alphanumeric character with - (spaces, CJK characters, etc.). Command Code therefore looks up a ~/.claude/projects/<dir> that does not exist, findClaudeCodeSessions() returns [], and nothing is reported to the user — no entry in skippedSessions or failedSessions.

Observed on a fresh v1.53.1 install: onboarding recorded 168 Codex sessions for the project but zero Claude Code sessions, even though 25 Claude Code sessions exist for the very same working directory.

Expected Behavior

For a project at /Users/<user>/Library/CloudStorage/OneDrive-Personal/My Repository/My Works/Startup/WUP, onboarding / /learn-taste should discover the existing ~/.claude/projects/-Users-<user>-Library-CloudStorage-OneDrive-Personal-My-Repository-My-Works-Startup-WUP/ directory (25 .jsonl sessions) and learn from it.

Actual Behavior
  • Command Code computes the lookup path with spaces preserved:
    ~/.claude/projects/-Users-<user>-...-My Repository-My Works-Startup-WUPisDirectory() fails → 0 sessions scanned.
  • Claude Code actually stores those sessions at:
    ~/.claude/projects/-Users-<user>-...-My-Repository-My-Works-Startup-WUP (spaces replaced by -).
  • After onboarding completes, ~/.commandcode/projects/<slug>/config.json contains only:
"tasteOnboarding": {
  "learnedSessions": { "codex": ["... 168 session ids ..."] },
  "skippedSessions": {},
  "failedSessions": {},
  "lastLearningDate": "2026-09-13T17:44:49.082Z",
  "completed": true
}

No claude-code key is created and no warning is surfaced, so it looks as if Claude Code simply had no sessions.

Steps to reproduce the issue
  1. Put a project in a path that contains a space (very common under OneDrive / Google Drive / "My Works"-style folders).
  2. Run Claude Code at least once in that project so ~/.claude/projects/<claude-encoded-dir>/*.jsonl exists (note that Claude Code replaces the spaces with -).
  3. Fresh-install Command Code in the same directory (or run /learn-taste) and let taste onboarding finish.
  4. Inspect ~/.commandcode/projects/<project-slug>/config.json: learnedSessions contains only codex (if anything); the Claude Code sessions were silently ignored.
Root cause / suggested fix

dist/cli.mjs:

function encodeAgentProjectDir(e){ return e.replace(/[/\\:]/g,"-") }
async function findClaudeCodeSessions(e){
  const n = `${t}/.claude/projects/${encodeAgentProjectDir(e.projectPath)}`;
  if (!await isDirectory2({ runtime: e.runtime, path: n })) return [];
  ...
}

Claude Code's own encoding replaces every non-alphanumeric character with -. Verified locally: a path segment 应用 (CJK) renders as two consecutive dashes, e.g. .../Dropbox/应用/Overleaf/...~/.claude/projects/-Users-<user>-Library-CloudStorage-Dropbox----Overleaf-....

Suggested fix:

  • Mirror Claude Code's encoding: e.replace(/[^a-zA-Z0-9]/g, "-").
  • Optionally add a fallback that scans ~/.claude/projects/* and matches the decoded path, so future encoding divergences degrade gracefully.
  • Surface "0 sessions found for claude-code" instead of silently skipping a source, so users can tell that discovery failed.

Related: #438 (non-standard Claude Code config paths), #639 (ENAMETOOLONG on taste learning), #740 (learning from worktree sessions).

Command Code Version

1.53.1 (cmd --version, Homebrew npm global install)

Operating System

macOS

Terminal/IDE

Apple Terminal

Shell

zsh

Lenguaje dominante
Sin datos de lenguaje
Estrellas
4k
Forks
350
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de CommandCodeAI/command-code

Todos los issues de CommandCodeAI/command-code

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.