diff options
| author | soryu <soryu@soryu.co> | 2026-01-17 06:44:22 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-17 16:39:28 +0000 |
| commit | 6b07707a4cc99c7e127a2bf6a0ca790fa033b5f5 (patch) | |
| tree | 23ae5355bf4fb16dd7c1cd5dbcd50f4b72c715dc /makima/frontend/src/main.tsx | |
| parent | bfc5d837c6212a8253accfdf95ae1a2fd692df4e (diff) | |
| download | soryu-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.tsx | 2 |
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 />} /> |
