mirror of
https://github.com/siteboon/claudecodeui.git
synced 2026-06-19 15:32:05 +08:00
Merge branch 'main' into electron-app
This commit is contained in:
@@ -25,6 +25,21 @@ export class ClaudeSessionSynchronizer implements IProviderSessionSynchronizer {
|
||||
private readonly provider = 'claude' as const;
|
||||
private readonly claudeHome = path.join(os.homedir(), '.claude');
|
||||
|
||||
/**
|
||||
* Returns true when a JSONL file is a subagent transcript rather than a
|
||||
* top-level session.
|
||||
*
|
||||
* Claude stores subagent transcripts under a `subagents/` directory, e.g.
|
||||
* `~/.claude/projects/<encoded-cwd>/<session-id>/subagents/agent-<id>.jsonl`.
|
||||
* Those files repeat the parent session's `sessionId`, so indexing them as
|
||||
* standalone sessions overwrites the parent row's `jsonl_path` and corrupts
|
||||
* the main session record. The recursive scan in `synchronize()` reaches
|
||||
* them, so both entry points must skip them.
|
||||
*/
|
||||
private isSubagentTranscript(filePath: string): boolean {
|
||||
return path.normalize(filePath).split(path.sep).includes('subagents');
|
||||
}
|
||||
|
||||
/**
|
||||
* Scans ~/.claude/projects and upserts discovered sessions into DB.
|
||||
*/
|
||||
@@ -38,6 +53,10 @@ export class ClaudeSessionSynchronizer implements IProviderSessionSynchronizer {
|
||||
|
||||
let processed = 0;
|
||||
for (const filePath of files) {
|
||||
if (this.isSubagentTranscript(filePath)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const parsed = await this.processSessionFile(filePath, nameMap);
|
||||
if (!parsed) {
|
||||
continue;
|
||||
@@ -66,6 +85,9 @@ export class ClaudeSessionSynchronizer implements IProviderSessionSynchronizer {
|
||||
if (!filePath.endsWith('.jsonl')) {
|
||||
return null;
|
||||
}
|
||||
if (this.isSubagentTranscript(filePath)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const nameMap = await buildLookupMap(path.join(this.claudeHome, 'history.jsonl'), 'sessionId', 'display');
|
||||
const parsed = await this.processSessionFile(filePath, nameMap);
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Projekt konnte nicht entfernt werden. Bitte erneut versuchen.",
|
||||
"deleteProjectError": "Fehler beim Entfernen des Projekts. Bitte erneut versuchen.",
|
||||
"createProjectFailed": "Projekt konnte nicht erstellt werden. Bitte erneut versuchen.",
|
||||
"createProjectError": "Fehler beim Erstellen des Projekts. Bitte erneut versuchen."
|
||||
"createProjectError": "Fehler beim Erstellen des Projekts. Bitte erneut versuchen.",
|
||||
"updateProjectError": "Fehler beim Aktualisieren des Projekts. Bitte erneut versuchen.",
|
||||
"refreshError": "Aktualisierung fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"restoreProjectFailed": "Projekt konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",
|
||||
"restoreProjectError": "Fehler beim Wiederherstellen des Projekts. Bitte erneut versuchen.",
|
||||
"restoreSessionFailed": "Sitzung konnte nicht wiederhergestellt werden. Bitte erneut versuchen.",
|
||||
"restoreSessionError": "Fehler beim Wiederherstellen der Sitzung. Bitte erneut versuchen."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Update verfügbar"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Failed to remove project. Please try again.",
|
||||
"deleteProjectError": "Error removing project. Please try again.",
|
||||
"createProjectFailed": "Failed to create project. Please try again.",
|
||||
"createProjectError": "Error creating project. Please try again."
|
||||
"createProjectError": "Error creating project. Please try again.",
|
||||
"updateProjectError": "Error updating project. Please try again.",
|
||||
"refreshError": "Failed to refresh. Please try again.",
|
||||
"restoreProjectFailed": "Failed to restore project. Please try again.",
|
||||
"restoreProjectError": "Error restoring project. Please try again.",
|
||||
"restoreSessionFailed": "Failed to restore session. Please try again.",
|
||||
"restoreSessionError": "Error restoring session. Please try again."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Update available"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Échec de la suppression du projet. Veuillez réessayer.",
|
||||
"deleteProjectError": "Erreur lors de la suppression du projet. Veuillez réessayer.",
|
||||
"createProjectFailed": "Échec de la création du projet. Veuillez réessayer.",
|
||||
"createProjectError": "Erreur lors de la création du projet. Veuillez réessayer."
|
||||
"createProjectError": "Erreur lors de la création du projet. Veuillez réessayer.",
|
||||
"updateProjectError": "Erreur lors de la mise à jour du projet. Veuillez réessayer.",
|
||||
"refreshError": "Échec de l'actualisation. Veuillez réessayer.",
|
||||
"restoreProjectFailed": "Échec de la restauration du projet. Veuillez réessayer.",
|
||||
"restoreProjectError": "Erreur lors de la restauration du projet. Veuillez réessayer.",
|
||||
"restoreSessionFailed": "Échec de la restauration de la session. Veuillez réessayer.",
|
||||
"restoreSessionError": "Erreur lors de la restauration de la session. Veuillez réessayer."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Mise à jour disponible"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Impossibile rimuovere il progetto. Riprova.",
|
||||
"deleteProjectError": "Errore durante la rimozione del progetto. Riprova.",
|
||||
"createProjectFailed": "Impossibile creare il progetto. Riprova.",
|
||||
"createProjectError": "Errore durante la creazione del progetto. Riprova."
|
||||
"createProjectError": "Errore durante la creazione del progetto. Riprova.",
|
||||
"updateProjectError": "Errore durante l'aggiornamento del progetto. Riprova.",
|
||||
"refreshError": "Aggiornamento non riuscito. Riprova.",
|
||||
"restoreProjectFailed": "Impossibile ripristinare il progetto. Riprova.",
|
||||
"restoreProjectError": "Errore durante il ripristino del progetto. Riprova.",
|
||||
"restoreSessionFailed": "Impossibile ripristinare la sessione. Riprova.",
|
||||
"restoreSessionError": "Errore durante il ripristino della sessione. Riprova."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Aggiornamento disponibile"
|
||||
|
||||
@@ -105,7 +105,13 @@
|
||||
"deleteProjectFailed": "プロジェクトの除去に失敗しました。もう一度お試しください。",
|
||||
"deleteProjectError": "プロジェクトの除去でエラーが発生しました。もう一度お試しください。",
|
||||
"createProjectFailed": "プロジェクトの作成に失敗しました。もう一度お試しください。",
|
||||
"createProjectError": "プロジェクトの作成でエラーが発生しました。もう一度お試しください。"
|
||||
"createProjectError": "プロジェクトの作成でエラーが発生しました。もう一度お試しください。",
|
||||
"updateProjectError": "プロジェクトの更新でエラーが発生しました。もう一度お試しください。",
|
||||
"refreshError": "更新に失敗しました。もう一度お試しください。",
|
||||
"restoreProjectFailed": "プロジェクトの復元に失敗しました。もう一度お試しください。",
|
||||
"restoreProjectError": "プロジェクトの復元でエラーが発生しました。もう一度お試しください。",
|
||||
"restoreSessionFailed": "セッションの復元に失敗しました。もう一度お試しください。",
|
||||
"restoreSessionError": "セッションの復元でエラーが発生しました。もう一度お試しください。"
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "アップデートあり"
|
||||
|
||||
@@ -105,7 +105,13 @@
|
||||
"deleteProjectFailed": "프로젝트 제거 실패. 다시 시도해주세요.",
|
||||
"deleteProjectError": "프로젝트 제거 오류. 다시 시도해주세요.",
|
||||
"createProjectFailed": "프로젝트 생성 실패. 다시 시도해주세요.",
|
||||
"createProjectError": "프로젝트 생성 오류. 다시 시도해주세요."
|
||||
"createProjectError": "프로젝트 생성 오류. 다시 시도해주세요.",
|
||||
"updateProjectError": "프로젝트 업데이트 오류. 다시 시도해주세요.",
|
||||
"refreshError": "새로고침 실패. 다시 시도해주세요.",
|
||||
"restoreProjectFailed": "프로젝트 복원 실패. 다시 시도해주세요.",
|
||||
"restoreProjectError": "프로젝트 복원 오류. 다시 시도해주세요.",
|
||||
"restoreSessionFailed": "세션 복원 실패. 다시 시도해주세요.",
|
||||
"restoreSessionError": "세션 복원 오류. 다시 시도해주세요."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "업데이트 가능"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Не удалось убрать проект. Попробуйте снова.",
|
||||
"deleteProjectError": "Ошибка при удалении проекта из списка. Попробуйте снова.",
|
||||
"createProjectFailed": "Не удалось создать проект. Попробуйте снова.",
|
||||
"createProjectError": "Ошибка при создании проекта. Попробуйте снова."
|
||||
"createProjectError": "Ошибка при создании проекта. Попробуйте снова.",
|
||||
"updateProjectError": "Ошибка при обновлении проекта. Попробуйте снова.",
|
||||
"refreshError": "Не удалось обновить. Попробуйте снова.",
|
||||
"restoreProjectFailed": "Не удалось восстановить проект. Попробуйте снова.",
|
||||
"restoreProjectError": "Ошибка при восстановлении проекта. Попробуйте снова.",
|
||||
"restoreSessionFailed": "Не удалось восстановить сеанс. Попробуйте снова.",
|
||||
"restoreSessionError": "Ошибка при восстановлении сеанса. Попробуйте снова."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Доступно обновление"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "Proje kaldırılamadı. Lütfen tekrar dene.",
|
||||
"deleteProjectError": "Proje kaldırılırken hata oluştu. Lütfen tekrar dene.",
|
||||
"createProjectFailed": "Proje oluşturulamadı. Lütfen tekrar dene.",
|
||||
"createProjectError": "Proje oluşturulurken hata oluştu. Lütfen tekrar dene."
|
||||
"createProjectError": "Proje oluşturulurken hata oluştu. Lütfen tekrar dene.",
|
||||
"updateProjectError": "Proje güncellenirken hata oluştu. Lütfen tekrar dene.",
|
||||
"refreshError": "Yenileme başarısız. Lütfen tekrar dene.",
|
||||
"restoreProjectFailed": "Proje geri yüklenemedi. Lütfen tekrar dene.",
|
||||
"restoreProjectError": "Proje geri yüklenirken hata oluştu. Lütfen tekrar dene.",
|
||||
"restoreSessionFailed": "Oturum geri yüklenemedi. Lütfen tekrar dene.",
|
||||
"restoreSessionError": "Oturum geri yüklenirken hata oluştu. Lütfen tekrar dene."
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "Güncelleme mevcut"
|
||||
|
||||
@@ -106,7 +106,13 @@
|
||||
"deleteProjectFailed": "移除项目失败,请重试。",
|
||||
"deleteProjectError": "移除项目时出错,请重试。",
|
||||
"createProjectFailed": "创建项目失败,请重试。",
|
||||
"createProjectError": "创建项目时出错,请重试。"
|
||||
"createProjectError": "创建项目时出错,请重试。",
|
||||
"updateProjectError": "更新项目时出错,请重试。",
|
||||
"refreshError": "刷新失败,请重试。",
|
||||
"restoreProjectFailed": "恢复项目失败,请重试。",
|
||||
"restoreProjectError": "恢复项目时出错,请重试。",
|
||||
"restoreSessionFailed": "恢复会话失败,请重试。",
|
||||
"restoreSessionError": "恢复会话时出错,请重试。"
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "有可用更新"
|
||||
|
||||
@@ -105,7 +105,13 @@
|
||||
"deleteProjectFailed": "移除專案失敗,請重試。",
|
||||
"deleteProjectError": "移除專案時出錯,請重試。",
|
||||
"createProjectFailed": "建立專案失敗,請重試。",
|
||||
"createProjectError": "建立專案時出錯,請重試。"
|
||||
"createProjectError": "建立專案時出錯,請重試。",
|
||||
"updateProjectError": "更新專案時出錯,請重試。",
|
||||
"refreshError": "重新整理失敗,請重試。",
|
||||
"restoreProjectFailed": "還原專案失敗,請重試。",
|
||||
"restoreProjectError": "還原專案時出錯,請重試。",
|
||||
"restoreSessionFailed": "還原工作階段失敗,請重試。",
|
||||
"restoreSessionError": "還原工作階段時出錯,請重試。"
|
||||
},
|
||||
"version": {
|
||||
"updateAvailable": "有可用更新"
|
||||
|
||||
Reference in New Issue
Block a user