Баг
Сессии, в пути проекта которых есть символ подчёркивания (_), не загружают детальные сообщения — в списке показывается "0 total", а в UI сообщения отсутствуют.
Причина
В src/data.js ключ проекта (projectKey) вычисляется так:
const projectKey = s.project.replace(/[\/\.]/g, '-');
Эта регулярка заменяет только / и . на -, оставляя _ как есть.
Однако сам Claude Code при создании директории проекта в ~/.claude/projects/ заменяет все не-алфавитно-цифровые символы (включая _) на -.
Из-за этого возникает рассогласование. Пример:
| Путь проекта |
codedash вычисляет |
Реальная директория |
/home/user/my_project |
-home-user-my_project |
-home-user-my-project |
/home/user/some_other_app |
-home-user-some_other_app |
-home-user-some-other-app |
Поскольку вычисленный путь не совпадает с реальной директорией, fs.existsSync(sessionFile) возвращает false, и сессия получает detail_messages: 0 и has_detail: false.
Затронутый код
Регулярка s.project.replace(/[\/\.]/g, '-') встречается в нескольких местах src/data.js:
- Обогащение сессий Claude детальной информацией (~строка 712)
findSessionFile()
deleteSession()
exportSessionMarkdown()
Строка 286 (Cursor) использует ту же регулярку, но там логика другая и её менять не нужно.
Предлагаемый фикс
Заменить регулярку на ту, которая соответствует поведению Claude Code:
const projectKey = s.project.replace(/[^a-zA-Z0-9-]/g, '-');
Проверено локально — после замены сессии с _ в пути корректно загружают все сообщения.
Баг
Сессии, в пути проекта которых есть символ подчёркивания (
_), не загружают детальные сообщения — в списке показывается "0 total", а в UI сообщения отсутствуют.Причина
В
src/data.jsключ проекта (projectKey) вычисляется так:Эта регулярка заменяет только
/и.на-, оставляя_как есть.Однако сам Claude Code при создании директории проекта в
~/.claude/projects/заменяет все не-алфавитно-цифровые символы (включая_) на-.Из-за этого возникает рассогласование. Пример:
/home/user/my_project-home-user-my_project-home-user-my-project/home/user/some_other_app-home-user-some_other_app-home-user-some-other-appПоскольку вычисленный путь не совпадает с реальной директорией,
fs.existsSync(sessionFile)возвращаетfalse, и сессия получаетdetail_messages: 0иhas_detail: false.Затронутый код
Регулярка
s.project.replace(/[\/\.]/g, '-')встречается в нескольких местахsrc/data.js:findSessionFile()deleteSession()exportSessionMarkdown()Строка 286 (Cursor) использует ту же регулярку, но там логика другая и её менять не нужно.
Предлагаемый фикс
Заменить регулярку на ту, которая соответствует поведению Claude Code:
Проверено локально — после замены сессии с
_в пути корректно загружают все сообщения.