From 5026138ad95eba66ec20ad3ac6f0941b7b5b2f74 Mon Sep 17 00:00:00 2001 From: corpi Date: Tue, 17 Mar 2026 12:57:59 +0900 Subject: [PATCH] =?UTF-8?q?fix(space):=20=EC=A2=85=EB=A3=8C=EC=99=80=20?= =?UTF-8?q?=EB=AA=A9=ED=91=9C=20=EC=99=84=EB=A3=8C=20=ED=9D=90=EB=A6=84=20?= =?UTF-8?q?=EC=9E=AC=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/SpaceFocusHudWidget.tsx | 40 ++++++++++++++----- .../model/useSpaceWorkspaceSessionControls.ts | 2 +- .../ui/SpaceWorkspaceWidget.tsx | 2 +- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/widgets/space-focus-hud/ui/SpaceFocusHudWidget.tsx b/src/widgets/space-focus-hud/ui/SpaceFocusHudWidget.tsx index 1857d30..8fe6151 100644 --- a/src/widgets/space-focus-hud/ui/SpaceFocusHudWidget.tsx +++ b/src/widgets/space-focus-hud/ui/SpaceFocusHudWidget.tsx @@ -22,7 +22,7 @@ interface SpaceFocusHudWidgetProps { microStep?: string | null; }) => boolean | Promise; onGoalUpdate: (nextGoal: string) => boolean | Promise; - onGoalFinish: () => boolean | Promise; + onGoalCompleteFinish: () => boolean | Promise; onTimerFinish: () => boolean | Promise; onAddTenMinutes: () => boolean | Promise; onStatusMessage: (payload: HudStatusLinePayload) => void; @@ -42,7 +42,7 @@ export const SpaceFocusHudWidget = ({ sessionPhase = "focus", onIntentUpdate, onGoalUpdate, - onGoalFinish, + onGoalCompleteFinish, onTimerFinish, onAddTenMinutes, onStatusMessage, @@ -103,9 +103,16 @@ export const SpaceFocusHudWidget = ({ } timerPromptSignatureRef.current = timerCompletionSignature; + setEndSessionConfirmOpen(false); setOverlay("timer-complete"); }, [timerCompletionSignature]); + const handleOpenGoalComplete = () => { + setEndSessionConfirmOpen(false); + setCompletePreferredView("choice"); + setOverlay("complete"); + }; + const handleInlineMicrostepUpdate = async (nextStep: string | null) => { if (isSavingIntent) return false; @@ -191,13 +198,26 @@ export const SpaceFocusHudWidget = ({ {hasActiveSession && (sessionPhase === "focus" || sessionPhase === "break") && ( - +
+ + + +
)} @@ -212,7 +232,7 @@ export const SpaceFocusHudWidget = ({ onFinish={() => overlay === "timer-complete" ? Promise.resolve(onTimerFinish()) - : Promise.resolve(onGoalFinish()) + : Promise.resolve(onGoalCompleteFinish()) } onExtendTenMinutes={() => Promise.resolve(onAddTenMinutes())} onRest={() => { diff --git a/src/widgets/space-workspace/model/useSpaceWorkspaceSessionControls.ts b/src/widgets/space-workspace/model/useSpaceWorkspaceSessionControls.ts index 69cfe94..c243fd5 100644 --- a/src/widgets/space-workspace/model/useSpaceWorkspaceSessionControls.ts +++ b/src/widgets/space-workspace/model/useSpaceWorkspaceSessionControls.ts @@ -300,7 +300,7 @@ export const useSpaceWorkspaceSessionControls = ({ } const completionResult = await completeSession({ - completionType: 'manual-end', + completionType: 'goal-complete', completedGoal: trimmedCurrentGoal || undefined, }); diff --git a/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx b/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx index 7b4f8ff..3d7bc99 100644 --- a/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx +++ b/src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx @@ -364,7 +364,7 @@ export const SpaceWorkspaceWidget = () => { playbackState={resolvedPlaybackState} sessionPhase={phase ?? 'focus'} onIntentUpdate={controls.handleIntentUpdate} - onGoalFinish={async () => { + onGoalCompleteFinish={async () => { const completionResult = await controls.handleGoalComplete(); if (completionResult) {