Skip to content

fix(claude): index custom session titles - #137

Open
nzomkxia wants to merge 1 commit into
tommy0103:mainfrom
nzomkxia:codex/fix-claude-custom-title
Open

fix(claude): index custom session titles#137
nzomkxia wants to merge 1 commit into
tommy0103:mainfrom
nzomkxia:codex/fix-claude-custom-title

Conversation

@nzomkxia

@nzomkxia nzomkxia commented Sep 2, 2026

Copy link
Copy Markdown

What and why

Claude Code persists app-, CLI-, and hook-assigned session names as custom-title records with a customTitle field.

The Claude provider previously recognized only history-derived titles and ai-title records. As a result, sessions that had a valid Claude Code title were stored with sessions.title = NULL and displayed as (untitled) in Obelisk.

This change:

  • indexes custom-title records;
  • gives titles the precedence customTitle > aiTitle > historyTitle;
  • scans title metadata across the complete transcript during incremental parsing, so a cursor-resumed parse does not lose an existing title;
  • bumps the Claude canonical transcript marker from v2 to v3, causing unchanged existing transcripts to be replayed and their titles backfilled;
  • adds coverage for title precedence, incremental parsing, and marker-driven replay.

Verification

  • npm test with Node 22.23.2 (matching CI) — 613 pass / 0 fail
  • Claude parser and app indexer tests — 27 pass / 0 fail
  • npm run typecheck — 0 errors (root + app)
  • npm run lint — 0 errors / 9 pre-existing warnings
  • New tests run in CI through .github/workflows/cli.yml
  • No existing assertion was loosened
  • Built and tested the macOS app against existing Claude Code sessions; previously untitled sessions displayed their expected titles
  • Re-ran the checks above on the current head (010d72c); no merge occurred after verification

Deliberately out of scope

  • No renderer or Electron UI behavior was changed.
  • No database schema or migration was added.
  • No other provider was changed.
  • This change reads titles already written by Claude Code; it does not generate or modify titles in Claude Code itself.

Provider adapter
  • Existing session identity and discovery behavior are unchanged
  • Existing directory-layout behavior is unchanged
  • Canonical transcript and SQLite persistence coverage passes in the full root test suite
  • Text-less message handling is unchanged
  • The canonical transcript marker was bumped from v2 to v3 because persisted session titles change
  • Visibility and sidechain semantics are unchanged
  • Cursor signature and rewrite detection are unchanged
  • Unknown-version handling is unchanged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant