diff --git a/ccw/src/templates/dashboard-css/24-prompt-history.css b/ccw/src/templates/dashboard-css/24-prompt-history.css index 33371813..7bd178cd 100644 --- a/ccw/src/templates/dashboard-css/24-prompt-history.css +++ b/ccw/src/templates/dashboard-css/24-prompt-history.css @@ -90,7 +90,9 @@ display: grid; grid-template-columns: 1fr 400px; gap: 1.5rem; - align-items: start; + align-items: stretch; + flex: 1; + min-height: 0; } @media (max-width: 1200px) { diff --git a/ccw/src/templates/dashboard-css/26-claude-manager.css b/ccw/src/templates/dashboard-css/26-claude-manager.css index 8f15c94a..d9a02641 100644 --- a/ccw/src/templates/dashboard-css/26-claude-manager.css +++ b/ccw/src/templates/dashboard-css/26-claude-manager.css @@ -94,6 +94,8 @@ .claude-manager-column.center { overflow: hidden; height: 100%; + display: flex; + flex-direction: column; } .claude-manager-column.right { @@ -286,11 +288,15 @@ flex: 1; overflow-y: auto; padding: 1rem; + min-height: 0; + background: hsl(var(--muted) / 0.3); + border-radius: 0 0 0.5rem 0.5rem; } .markdown-content { line-height: 1.6; color: hsl(var(--foreground)); + min-height: 100%; } .markdown-content h1 { @@ -507,10 +513,14 @@ flex-direction: column; align-items: center; justify-content: center; - height: 100%; + flex: 1; + min-height: 200px; color: hsl(var(--muted-foreground)); text-align: center; padding: 2rem; + background: hsl(var(--muted) / 0.3); + border-radius: 0.5rem; + margin: 0.5rem; } .empty-state i { @@ -763,6 +773,18 @@ color: hsl(0, 72%, 51%); } +.freshness-badge.loading { + background: hsl(var(--muted)); + color: hsl(var(--muted-foreground)); + min-width: 28px; + animation: pulse 1.5s ease-in-out infinite; +} + +@keyframes pulse { + 0%, 100% { opacity: 0.5; } + 50% { opacity: 1; } +} + /* File tree item freshness states */ .file-tree-item.freshness-stale { border-left: 2px solid hsl(0, 72%, 51%); @@ -846,6 +868,21 @@ color: hsl(38, 92%, 50%); } +/* Freshness loading state */ +.freshness-loading { + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 1.5rem; + color: hsl(var(--muted-foreground)); + font-size: 0.875rem; +} + +.freshness-loading i { + animation: spin 1s linear infinite; +} + /* ======================================== * Responsive Design * ======================================== */ diff --git a/ccw/src/templates/dashboard-js/views/claude-manager.js b/ccw/src/templates/dashboard-js/views/claude-manager.js index 24eaa28a..dd3575bc 100644 --- a/ccw/src/templates/dashboard-js/views/claude-manager.js +++ b/ccw/src/templates/dashboard-js/views/claude-manager.js @@ -37,11 +37,10 @@ async function renderClaudeManager() { '
' + t('common.loading') + '
' + ''; - // Load data + // Load file data first (fast operation) await loadClaudeFiles(); - await loadFreshnessData(); - // Render layout + // Render layout immediately without waiting for freshness data container.innerHTML = '