summaryrefslogtreecommitdiff
path: root/makima/frontend/src/main.tsx
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-17 06:44:22 +0000
committersoryu <soryu@soryu.co>2026-01-17 16:39:28 +0000
commit6b07707a4cc99c7e127a2bf6a0ca790fa033b5f5 (patch)
tree23ae5355bf4fb16dd7c1cd5dbcd50f4b72c715dc /makima/frontend/src/main.tsx
parentbfc5d837c6212a8253accfdf95ae1a2fd692df4e (diff)
downloadsoryu-6b07707a4cc99c7e127a2bf6a0ca790fa033b5f5.tar.gz
soryu-6b07707a4cc99c7e127a2bf6a0ca790fa033b5f5.zip
feat(frontend): Add UI for phase transition confirmation requests
When phase_guard is enabled and a supervisor tries to advance the contract phase, users now see a confirmation modal with: - Current and proposed next phase visualization - Phase deliverables checklist (if available) - Summary of the phase work - Options to "Approve & Advance" or "Request Changes" with feedback Components added: - PhaseConfirmationModal: Full modal dialog for phase confirmations - PhaseConfirmationInline: Inline variant for task output view - PhaseConfirmationNotification: Global notification wrapper - PhaseConfirmationToast: Alternative toast-style notification Integration: - Added phase_confirmation message type to TaskOutput renderer - Extended PendingQuestion API type with phase confirmation data - Integrated notification into main app layout The UI uses the existing supervisor question infrastructure (polling via /api/v1/mesh/questions) and responds with APPROVE or CHANGES_REQUESTED prefixed feedback. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'makima/frontend/src/main.tsx')
-rw-r--r--makima/frontend/src/main.tsx2
1 files changed, 2 insertions, 0 deletions
diff --git a/makima/frontend/src/main.tsx b/makima/frontend/src/main.tsx
index 5fd6a4e..19f02d1 100644
--- a/makima/frontend/src/main.tsx
+++ b/makima/frontend/src/main.tsx
@@ -6,6 +6,7 @@ import { AuthProvider } from "./contexts/AuthContext";
import { SupervisorQuestionsProvider } from "./contexts/SupervisorQuestionsContext";
import { GridOverlay } from "./components/GridOverlay";
import { SupervisorQuestionNotification } from "./components/SupervisorQuestionNotification";
+import { PhaseConfirmationNotification } from "./components/PhaseConfirmationNotification";
import { ProtectedRoute } from "./components/ProtectedRoute";
import HomePage from "./routes/_index";
import ListenPage from "./routes/listen";
@@ -24,6 +25,7 @@ createRoot(document.getElementById("root")!).render(
<BrowserRouter>
<GridOverlay />
<SupervisorQuestionNotification />
+ <PhaseConfirmationNotification />
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/login" element={<LoginPage />} />