diff --git a/api/core/files/routes.ts b/api/core/files/routes.ts index b3fb6c6..f869c6a 100644 --- a/api/core/files/routes.ts +++ b/api/core/files/routes.ts @@ -239,9 +239,18 @@ router.post( validateBody(saveFileSchema), asyncHandler(async (req: Request, res: Response) => { const { path: relPath, content } = req.body + console.log('[save] relPath:', relPath) + console.log('[save] content length:', content?.length) + console.log('[save] content preview:', content?.slice(0, 100)) const { fullPath } = resolveNotebookPath(relPath) + console.log('[save] fullPath:', fullPath) await fs.mkdir(path.dirname(fullPath), { recursive: true }) + console.log('[save] before writeFile') await fs.writeFile(fullPath, content, 'utf-8') + console.log('[save] after writeFile, checking file...') + const writtenContent = await fs.readFile(fullPath, 'utf-8') + console.log('[save] written content length:', writtenContent?.length) + console.log('[save] written content preview:', writtenContent?.slice(0, 100)) successResponse(res, null) }), diff --git a/api/modules/time-tracking/sessionPersistence.ts b/api/modules/time-tracking/sessionPersistence.ts index f0fc40b..11da2d9 100644 --- a/api/modules/time-tracking/sessionPersistence.ts +++ b/api/modules/time-tracking/sessionPersistence.ts @@ -183,7 +183,7 @@ class SessionPersistenceService implements SessionPersistence { try { const content = await fs.readFile(filePath, 'utf-8') const data = JSON.parse(content) - data.activeDays = Object.values(data.days).filter(d => d.totalDuration > 0).length + data.activeDays = Object.values(data.days).filter((d: any) => d.totalDuration > 0).length return data } catch (err) { return createEmptyMonthData(year, month) @@ -195,7 +195,7 @@ class SessionPersistenceService implements SessionPersistence { try { const content = await fs.readFile(filePath, 'utf-8') const data = JSON.parse(content) - data.totalActiveDays = Object.values(data.months).filter(m => m.totalDuration > 0).length + data.totalActiveDays = Object.values(data.months).filter((m: any) => m.totalDuration > 0).length return data } catch (err) { return createEmptyYearData(year) diff --git a/api/modules/time-tracking/timeService.ts b/api/modules/time-tracking/timeService.ts index 112e1d5..dd9795a 100644 --- a/api/modules/time-tracking/timeService.ts +++ b/api/modules/time-tracking/timeService.ts @@ -389,7 +389,7 @@ class TimeTrackerService { const yearData = await this.persistence.getYearData(targetYear) totalDuration = yearData.yearlyTotal activeDays = Object.values(yearData.months).reduce((sum, m) => { - return sum + Object.entries(m).filter(([_, d]) => (d as { totalDuration: number }).totalDuration > 0).length + return sum + Object.entries(m).filter(([_, d]) => (d as any).totalDuration > 0).length }, 0) for (const [month, summary] of Object.entries(yearData.months)) { diff --git a/src/modules/home/HomePage.tsx b/src/modules/home/HomePage.tsx index b13a5ae..d25e3e1 100644 --- a/src/modules/home/HomePage.tsx +++ b/src/modules/home/HomePage.tsx @@ -1,62 +1,7 @@ -import { useRef, useEffect, useState } from 'react' +import React from 'react' export const HomePage = () => { - const webviewRef = useRef(null) - const [isLoading, setIsLoading] = useState(true) - const [error, setError] = useState(null) - - useEffect(() => { - const startOpencodeServer = async () => { - try { - const result = await window.electronAPI?.opencodeStartServer() - if (!result?.success) { - setError(result?.error || 'Failed to start opencode server') - } - } catch (err) { - setError(err instanceof Error ? err.message : 'Unknown error') - } - } - - startOpencodeServer() - - return () => { - window.electronAPI?.opencodeStopServer() - } - }, []) - - useEffect(() => { - const webview = webviewRef.current - if (!webview) return - - webview.addEventListener('did-fail-load', (e) => { - console.error('[HomePage] Failed to load:', e) - setIsLoading(false) - }) - - webview.addEventListener('did-finish-load', () => { - setIsLoading(false) - }) - }, []) - return ( -
- {isLoading && ( -
-
正在启动 opencode 服务...
-
- )} - {error && ( -
-
启动失败: {error}
-
- )} - -
+
) }