[FEATURE] Desktop Recents to enumerate ~/.claude/projects/ directly.

Resolved 💬 6 comments Opened Apr 30, 2026 by AjhereD Closed Jul 1, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Problem

The Claude Desktop app's "Recents" panel (Code tab) only lists sessions stored in %APPDATA%\Claude\claude-code-sessions\, which is populated exclusively by sessions created through the desktop app itself. Sessions stored on disk at ~/.claude/projects/<encoded-cwd>/*.jsonl — the canonical session location used by the standalone CLI — are never enumerated or imported. As a result, users who installed the desktop app after using the CLI see an empty Recents list despite having a full history of valid sessions on disk.

Reproduction (Windows 11, desktop app v2.1.121)

Use the standalone CLI (@anthropic-ai/claude-code) for several weeks. Sessions accumulate in C:\Users\<user>\.claude\projects\<encoded-cwd>\*.jsonl.
Install the Claude Desktop app for the first time.
Open the Code tab and select the same working directory used by the CLI.
Expected: Recents lists prior sessions (the data is on disk and readable).
Actual: Recents is empty. The Stats panel correctly shows the historical session/message counts because it does read ~/.claude/projects/, which makes the inconsistency more confusing.
Evidence on my machine

~/.claude/projects/G--workspace/ contains 35 valid JSONL session files (~200 MB).
Stats panel shows 34 sessions, 19,684 messages, 30M tokens.
%APPDATA%\Claude\claude-code-sessions\ contains exactly one UUID, created at desktop-app first-run timestamp.
claude --resume (standalone CLI) lists all 35 sessions correctly from the same working directory.
Impact

Proposed Solution

Proposed Solution

Make ~/.claude/projects/ the single source of truth for the Recents list. The desktop app should enumerate it directly instead of maintaining a parallel store.

Specifics

On directory selection (when the user picks a working directory in the Code tab), the app should:
Compute the encoded path (G:\workspace > G--workspace).
Read ~/.claude/projects/<encoded-cwd>/*.jsonl.
Parse each file's first event for the timestamp and the first user message for a preview/title.
Render the list, sorted by most-recent activity, in Recents.
On new session creation, write the session JSONL to ~/.claude/projects/<encoded-cwd>/<uuid>.jsonl directly — same location and format the CLI uses. Drop the separate %APPDATA%\Claude\claude-code-sessions\ store entirely (or keep it only as a UI-state cache like "last opened tabs", not as the session list).
On session resume, read the JSONL from ~/.claude/projects/ rather than from the parallel store. This makes desktop and CLI fully interchangeable: a session started in either surface can be resumed in the other.
Why this approach over a one-time import

Permanently fixes the divergence . There is no "two stores that need to stay in sync" problem to maintain.
Sessions started via the CLI after desktop install also appear in Recents automatically (one-time import would miss those).
The Stats panel already reads ~/.claude/projects/ correctly, so the data path is proven and trusted.
Eliminates an entire class of future bugs (index out of sync, missing imports, encoding mismatches between the two stores).
Migration

No migration needed for users. On the next desktop launch after the fix ships, Recents populates from existing JSONL files automatically. The orphaned %APPDATA%\Claude\claude-code-sessions\ folder can be cleaned up by the app on first run post-update, or simply ignored.

Backward compatibility

The CLI already uses ~/.claude/projects/ exclusively. Aligning the desktop app on the same store is the compatibility story — it removes the only point of divergence.

Alternative Solutions

_No response_

Priority

Critical - Blocking my work

Feature Category

Configuration and settings

Use Case Example

Users perceive the desktop app as "losing" their history, even though no data is lost.
Forces users to keep the CLI installed alongside the desktop app to access prior conversations.
Stats panel and Recents disagree on what exists, eroding trust in the UI.

On first run / on directory change, enumerate ~/.claude/projects/<encoded-cwd>/*.jsonl and surface those sessions in Recents directly. Make ~/.claude/projects/ the single source of truth (preferred — matches the CLI).
Or, on first run, perform a one-time import that registers existing JSONL sessions into claude-code-sessions\.
At minimum, show an explanatory empty-state ("N sessions exist on disk but were not created in this app — open in CLI with claude --resume") so the gap is discoverable.

Additional Context

_No response_

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗