diff --git a/extension/gravity-web-bridge-0.1.0.vsix b/extension/gravity-web-bridge-0.1.0.vsix index fb4f95f..6a3b6b0 100644 Binary files a/extension/gravity-web-bridge-0.1.0.vsix and b/extension/gravity-web-bridge-0.1.0.vsix differ diff --git a/public/js/app.js b/public/js/app.js index a4f6a03..0243203 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -107,21 +107,32 @@ bridgeSessions = (sessData.sessions || []).map(s => { const cascade = cascadeMap[s.id] || {}; - // 워크스페이스에서 프로젝트명 추출 + // 워크스페이스에서 프로젝트명 추출 (computedName 우선) + const repoName = cascade.workspaces?.[0]?.repository?.computedName || ''; const wsUri = cascade.workspaces?.[0]?.workspaceFolderAbsoluteUri || ''; - const project = wsUri ? decodeURIComponent(wsUri.split('/').pop()) : ''; + const project = repoName + ? repoName.split('/').pop() // "Variet/gravity_web" → "gravity_web" + : (wsUri ? decodeURIComponent(wsUri.split('/').pop()) : ''); + + // 대화 이름: cascade summary > task name > title (Conversation N은 무시) + const rawTitle = s.title || ''; + const isGeneric = /^Conversation \d+$/.test(rawTitle); + const summary = cascade.summary || ''; + const taskName = cascade.latestTaskBoundaryStep?.step?.taskBoundary?.taskName || ''; + const displayName = summary || taskName || (isGeneric ? '' : rawTitle) || s.id.substring(0, 8); + // 상태 const runStatus = cascade.status || ''; const isRunning = runStatus.includes('RUNNING'); return { id: s.id, - name: s.title || s.id.substring(0, 8), + name: displayName, host: 'bridge', cdpPort: 0, status: isRunning ? 'running' : 'connected', - title: s.title, - stepCount: s.stepCount, - lastModified: s.lastModifiedTime, + title: displayName, + stepCount: cascade.stepCount || s.stepCount || 0, + lastModified: cascade.lastModifiedTime || s.lastModifiedTime, project: project, isRunning: isRunning, isBridge: true,