From 64f25a39c020b5b3d2968f730d0fee6e0a374126 Mon Sep 17 00:00:00 2001 From: bboysoul Date: Wed, 23 Sep 2026 07:16:51 +0800 Subject: [PATCH] feat: pomodoro duration settings sheet, honest announcements, done-state reset --- frontend/src/PomodoroIntegration.test.ts | 11 ++++++ frontend/src/PomodoroPanel.vue | 47 ++++++++++++++++++++---- frontend/src/lib/pomodoro-timer.test.ts | 23 +++++++++++- frontend/src/lib/pomodoro-timer.ts | 11 ++++++ frontend/src/style.css | 2 +- 5 files changed, 84 insertions(+), 10 deletions(-) diff --git a/frontend/src/PomodoroIntegration.test.ts b/frontend/src/PomodoroIntegration.test.ts index adcd846..9b2c33d 100644 --- a/frontend/src/PomodoroIntegration.test.ts +++ b/frontend/src/PomodoroIntegration.test.ts @@ -30,4 +30,15 @@ describe('pomodoro integration', () => { expect(panel).toContain('Date.now(), WRITER_ID') expect(panel).toContain('savePomodoroState(window.localStorage, STORAGE_KEY, state.value)') }) + + it('offers duration settings and keeps announcements honest about the running state', () => { + expect(panel).toContain("import AppSheet from './components/AppSheet.vue'") + expect(panel).toContain('@click="settingsOpen = true"') + expect(panel).toContain('已跳过休息,下一轮专注已开始') + expect(panel).toContain('专注完成,休息已开始') + expect(panel).toContain('休息完成,下一轮专注已开始') + expect(panel).toContain("v-if=\"state.status !== 'idle'\"") + expect(panel).toContain("setPomodoroDurations(state.value, minutes, state.value.breakMinutes") + expect(css).toContain('.pomodoro-settings__options button{min-height:44px') + }) }) diff --git a/frontend/src/PomodoroPanel.vue b/frontend/src/PomodoroPanel.vue index 0db3cbe..1002e38 100644 --- a/frontend/src/PomodoroPanel.vue +++ b/frontend/src/PomodoroPanel.vue @@ -1,6 +1,7 @@