Skip to content

feat: показывать recap (away_summary) Claude Code в заголовке сессии#182

Merged
vakovalskii merged 1 commit into
vakovalskii:mainfrom
rrr3try:feat/claude-recap
Apr 17, 2026
Merged

feat: показывать recap (away_summary) Claude Code в заголовке сессии#182
vakovalskii merged 1 commit into
vakovalskii:mainfrom
rrr3try:feat/claude-recap

Conversation

@rrr3try
Copy link
Copy Markdown
Contributor

@rrr3try rrr3try commented Apr 17, 2026

Что

Claude Code 2.1.108+ пишет в JSONL сессии авто-резюме вида
{"type":"system","subtype":"away_summary","content":"…~40 слов…"}
когда пользователь возвращается после простоя 3–5+ минут.

PR добавляет парсинг этих записей и показывает последний recap как заголовок карточки сессии — когда он есть и когда не задан явный session_name.

Приоритет заголовка

session_name (ручной кастомный) → recap (авто от Claude) → first_message (сырое первое сообщение).
AI-титулы (sessionTitles, localStorage) остаются поверх всего, как и раньше.

Изменения

  • src/data.js
    • parseClaudeSessionFile: извлекает последний away_summary в поле lastRecap (cap 300 символов).
    • mergeClaudeSessionDetail: пробрасывает session.recap.
    • Два inline-сборщика сессий тоже пробрасывают recap.
    • Имя дискового кэша бамп → codedash-parsed-cache-v2.json, чтобы одноразово перепарсить существующие записи и подхватить новое поле.
  • src/frontend/app.js
    • stripRecapSuffix — срезает хвост (disable recaps in /config), который Claude Code добавляет к тексту.
    • getSessionDisplayName учитывает recap в приоритете.
    • searchScore ищет и по recap.
  • src/frontend/cloud.js — то же для локальных и облачных строк.

Охват

Recap есть только там, где сработал авто-триггер на простой. В моём архиве (~800 сессий) — 2 с recap. Для сессий без него поведение не меняется.

Проверка

```bash
node -e "const d = require('./src/data.js'); const s = d.loadSessions().filter(x => x.recap); console.log(s.length, 'with recap'); s.slice(0,3).forEach(x => console.log(x.id.slice(0,8), '→', x.recap.slice(0,80)))"
```

Параллельный порт этой же фичи в родственный проект terminal-mba: Graf-RAGov@565ee00

Claude Code 2.1.108+ writes auto-recap entries to session JSONL:
  {"type":"system","subtype":"away_summary","content":"~40 words…"}

Parse the last away_summary per session, surface it as session.recap,
and use it in the card title when no explicit session_name is set.
Falls back to first_message when no recap exists, so sessions without
one behave identically.

Also:
- Strip "(disable recaps in /config)" suffix from displayed text
- Include recap in search haystack
- Bump parsed disk cache filename to -v2.json to force a one-time
  rebuild so pre-existing cache entries pick up the new field
@vakovalskii vakovalskii merged commit c51efe7 into vakovalskii:main Apr 17, 2026
vakovalskii added a commit that referenced this pull request Apr 17, 2026
…lytics tabs

Merged PRs:
- #182 (@rrr3try): Show Claude Code recap (away_summary) as session title
- #181 (@NovakPAai): Block bulk delete for filter-hidden sessions
- #180 (@NovakPAai): Detect new sessions in existing dirs + local-agent-mode
- #179 (@NovakPAai): Message sort toggle in session drawer + default setting
- #86 (@NovakPAai): Sub-tabs in Cost Analytics (Overview/Breakdown/History)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
vakovalskii added a commit that referenced this pull request Apr 17, 2026
…lytics tabs (#183)

Merged PRs:
- #182 (@rrr3try): Show Claude Code recap (away_summary) as session title
- #181 (@NovakPAai): Block bulk delete for filter-hidden sessions
- #180 (@NovakPAai): Detect new sessions in existing dirs + local-agent-mode
- #179 (@NovakPAai): Message sort toggle in session drawer + default setting
- #86 (@NovakPAai): Sub-tabs in Cost Analytics (Overview/Breakdown/History)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

2 participants