From 96390df25423cdc39a283e6fd0fd5aed02c97be9 Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Fri, 13 Mar 2026 18:39:08 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B7=BB=E5=8A=A0=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97=E3=80=81=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=20time-tracking=20=E7=B1=BB=E5=9E=8B=E3=80=81=E7=AE=80?= =?UTF-8?q?=E5=8C=96=E9=A6=96=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/core/files/routes.ts | 9 +++ .../time-tracking/sessionPersistence.ts | 4 +- api/modules/time-tracking/timeService.ts | 2 +- src/modules/home/HomePage.tsx | 59 +------------------ 4 files changed, 14 insertions(+), 60 deletions(-) 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}
-
- )} - -
+
) }