Analytics dashboard shows 0 conversations on Windows despite thousands of valid JSONL files

Author: ShadowGeorgeMCreated Jun 3, 2026Updated Jun 3, 2026

Bug

Analytics dashboard reports totalConversations: 0 despite ~/.claude/projects/ containing thousands of valid .jsonl transcript files on Windows.

Environment

  • OS: Windows 11
  • Node: v24.14.0
  • claude-code-templates: 1.28.16 (npm global)
  • Claude Code: 2.1.161
  • User dir with space: C:\Users\George Marroquin\ (matters — path-with-space is the smell)
  • Shell: Git Bash + PowerShell

Reproduce

  1. Use Claude Code (Desktop or CLI) for a while → ~/.claude/projects/ accumulates JSONL transcripts
  2. cct --analytics → dashboard at http://localhost:3333
  3. Dashboard shows all metrics at 0

Evidence

bash
# 5,400 transcripts present
$ find "C:/Users/George Marroquin/.claude/projects/" -name "*.jsonl" | wc -l
5400

# API reports 0
$ curl -s http://localhost:3333/api/conversations | jq '.pagination'
{ "totalCount": 0, "currentCount": 0, ... }

$ curl -s http://localhost:3333/api/data | jq '.summary | {totalConversations, totalSessions}'
{ "totalConversations": 0, "totalSessions": null }

Suspected cause

ConversationAnalyzer.findJsonlFiles() walker likely failing on Windows paths with spaces or on broken/cyclic symlinks. In my case there was a broken symlink at ~/.claude/skills → G:\Mi unidad\ClaudeSync\... — removing it did not fix the issue, so symlink alone is not the cause.

analytics.js line 88 resolves claudeDir = path.join(homeDir, '.claude') which on Windows gives C:\Users\George Marroquin\.claude — correct path, walker fails downstream.

Workaround

None known. claude-mem web UI (port 37777) works as an alternative observability tool.

Suggested fix

  • Add debug log of findJsonlFiles result count + sample paths
  • Verify glob/walker handles paths with spaces and skips broken symlinks gracefully
  • Optional flag --claude-dir <path> to override default

Source: davila7/claude-code-templates