Skip to content

v0.4.1 — Fix space-bearing cwd JSONL lookup

Choose a tag to compare

@anhyobin anhyobin released this 21 May 06:28
· 22 commits to main since this release

Summary

A bug-fix release. Sessions whose cwd contained spaces (e.g. ~/Documents/Solutions Arhitect/Public Events/Claude Webinar) were showing only their task list — model badge, context gauge, thinking counter, skill counter, and /goal banner all came up empty.

Root cause

PathDecoder.encodedProjectPath only replaced / and . with -, leaving spaces intact. The Claude CLI, however, also collapses spaces to - when naming ~/.claude/projects/ subdirectories, so the encoder produced a path that never matched on disk:

Input cwd App-encoded (before) Actual directory
/Users/anhyobin/Documents/Solutions Arhitect/Public Events/Claude Webinar -Users-anhyobin-Documents-Solutions Arhitect-Public Events-Claude Webinar ❌ -Users-anhyobin-Documents-Solutions-Arhitect-Public-Events-Claude-Webinar

Because the main session JSONL never loaded, every value derived from it (mainTokens, mainModel, mainLastTurnUsage, mainThinkingBlockCount, mainSkillCounts, activeGoal) was empty. Only TaskLoader survived because tasks live under ~/.claude/tasks/{sessionId}/ — keyed by sessionId, not by encoded cwd — so the symptom was "task list shows up, nothing else does."

Fix

One-line change in PathDecoder.swift to also collapse spaces to -. The encoder is shared by SubagentLoader and both JSONL load paths in ClaudeDataStore, so the fix flows through every call site automatically.

Tests

New PathDecoderTests covers:

  • Space-bearing path (the regression that motivated the fix)
  • No-space path (regression guard — encoder must remain a no-op for the previously-working case)
  • Dot handling

Version

Info.plist: 0.4.0 → 0.4.1, build 6 → 7.

Full Changelog: v0.4.0...v0.4.1