diff --git a/ccw/src/core/server.ts b/ccw/src/core/server.ts index 9b90f68a..c5a370f0 100644 --- a/ccw/src/core/server.ts +++ b/ccw/src/core/server.ts @@ -104,6 +104,7 @@ const MODULE_FILES = [ 'help-i18n.js', // Help page translations 'utils.js', 'state.js', + 'services.js', // CacheManager, EventManager, PreloadService - must be before main.js 'api.js', 'components/theme.js', 'components/modals.js', diff --git a/ccw/src/templates/dashboard-js/views/codexlens-manager.js b/ccw/src/templates/dashboard-js/views/codexlens-manager.js index a0697db5..ae660f30 100644 --- a/ccw/src/templates/dashboard-js/views/codexlens-manager.js +++ b/ccw/src/templates/dashboard-js/views/codexlens-manager.js @@ -174,21 +174,28 @@ async function refreshWorkspaceIndexStatus(forceRefresh) { window.eventManager.on('data:updated:workspace-status', _workspaceStatusHandler); } - // 3. Trigger background loading - if (window.preloadService) { - try { - var freshData = await window.preloadService.preload('workspace-status', { force: forceRefresh }); - render(freshData); - } catch (err) { - console.error('[CodexLens] Failed to load workspace status:', err); - if (headerFtsEl) headerFtsEl.textContent = '--'; - if (headerVectorEl) headerVectorEl.textContent = '--'; - if (container) { - container.innerHTML = '
' + - ' ' + - (t('common.error') || 'Error') + ': ' + err.message + - '
'; - } + // 3. Trigger background loading (with fallback to direct fetch) + try { + var freshData; + if (window.preloadService) { + freshData = await window.preloadService.preload('workspace-status', { force: forceRefresh }); + } else { + // Fallback: direct fetch if preloadService not available + var path = encodeURIComponent(projectPath || ''); + var response = await fetch('/api/codexlens/workspace-status?path=' + path); + if (!response.ok) throw new Error('HTTP ' + response.status); + freshData = await response.json(); + } + render(freshData); + } catch (err) { + console.error('[CodexLens] Failed to load workspace status:', err); + if (headerFtsEl) headerFtsEl.textContent = '--'; + if (headerVectorEl) headerVectorEl.textContent = '--'; + if (container) { + container.innerHTML = '
' + + ' ' + + (t('common.error') || 'Error') + ': ' + err.message + + '
'; } }