From cfe3ea0aae878ae8f591acdc33a48332ac875b9e Mon Sep 17 00:00:00 2001
From: soryu <soryu@soryu.co>
Date: Thu, 29 Jan 2026 02:24:48 +0000
Subject: fix: Remove mistaken red team UI from VN frontend (#47)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* feat: Add Red Team UI to makima/frontend contract creation

- Add redTeamEnabled and redTeamPrompt state to contracts page
- Add "Enable Red Team Monitoring" checkbox with description
- Add conditional "Custom Review Criteria" textarea when enabled
- Include redTeamEnabled/redTeamPrompt in CreateContractRequest
- Reset red team fields when canceling contract creation
- Add redTeamEnabled to ContractSummary and Contract types
- Add redTeamEnabled/redTeamPrompt to CreateContractRequest type
- Add Red Team badge (🔍) to ContractList for enabled contracts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: Remove mistaken red team UI from VN frontend

PR #39 accidentally added red team UI code to the wrong frontend directory
(frontend/ instead of makima/frontend/). The correct implementation is
already in makima/frontend/. This commit removes the mistaken changes:

- Delete ContractCreateModal.tsx (was added by mistake)
- Revert ContractList.tsx to remove red team badge and create modal
- Revert ContractDetail.tsx to remove red team tab and notifications
- Revert types.ts to remove contract/task types
- Revert pc98.css to remove red team styling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* [WIP] Heartbeat checkpoint - 2026-01-29 02:18:40 UTC

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
---
 frontend/src/components/ContractList.tsx | 61 ++++++++++----------------------
 1 file changed, 18 insertions(+), 43 deletions(-)

(limited to 'frontend/src/components/ContractList.tsx')

diff --git a/frontend/src/components/ContractList.tsx b/frontend/src/components/ContractList.tsx
index 253b44f..77012db 100644
--- a/frontend/src/components/ContractList.tsx
+++ b/frontend/src/components/ContractList.tsx
@@ -1,6 +1,5 @@
-import React, { useEffect, useState, useCallback } from 'react'
+import React, { useEffect, useState } from 'react'
 import { Link } from 'react-router-dom'
-import { ContractCreateModal } from './ContractCreateModal'
 
 interface ContractSummary {
   id: string
@@ -13,35 +12,32 @@ interface ContractSummary {
   task_count: number
   repository_count: number
   created_at: string
-  // Red team fields
-  red_team_enabled?: boolean
 }
 
 export function ContractList() {
   const [contracts, setContracts] = useState<ContractSummary[]>([])
   const [loading, setLoading] = useState(true)
   const [error, setError] = useState<string | null>(null)
-  const [showCreateModal, setShowCreateModal] = useState(false)
 
-  const fetchContracts = useCallback(async () => {
-    try {
-      setLoading(true)
-      const response = await fetch('/api/v1/contracts')
-      if (!response.ok) {
-        throw new Error(`Failed to fetch contracts: ${response.statusText}`)
+  useEffect(() => {
+    async function fetchContracts() {
+      try {
+        setLoading(true)
+        const response = await fetch('/api/v1/contracts')
+        if (!response.ok) {
+          throw new Error(`Failed to fetch contracts: ${response.statusText}`)
+        }
+        const data = await response.json()
+        setContracts(data.contracts || [])
+      } catch (err) {
+        setError(err instanceof Error ? err.message : 'Unknown error')
+      } finally {
+        setLoading(false)
       }
-      const data = await response.json()
-      setContracts(data.contracts || [])
-    } catch (err) {
-      setError(err instanceof Error ? err.message : 'Unknown error')
-    } finally {
-      setLoading(false)
     }
-  }, [])
 
-  useEffect(() => {
     fetchContracts()
-  }, [fetchContracts])
+  }, [])
 
   if (loading) {
     return (
@@ -61,15 +57,7 @@ export function ContractList() {
 
   return (
     <div className="contract-list-container">
-      <div className="contract-list-header">
-        <h1>Contracts</h1>
-        <button
-          className="create-contract-btn"
-          onClick={() => setShowCreateModal(true)}
-        >
-          + New Contract
-        </button>
-      </div>
+      <h1>Contracts</h1>
       {contracts.length === 0 ? (
         <p>No contracts found</p>
       ) : (
@@ -77,14 +65,7 @@ export function ContractList() {
           {contracts.map((contract) => (
             <li key={contract.id} className="contract-item">
               <Link to={`/contracts/${contract.id}`}>
-                <h2>
-                  {contract.name}
-                  {contract.red_team_enabled && (
-                    <span className="red-team-badge" title="Red Team monitoring enabled">
-                      🔍
-                    </span>
-                  )}
-                </h2>
+                <h2>{contract.name}</h2>
                 {contract.description && <p>{contract.description}</p>}
                 <div className="contract-meta">
                   <span>Phase: {contract.phase}</span>
@@ -97,12 +78,6 @@ export function ContractList() {
           ))}
         </ul>
       )}
-
-      <ContractCreateModal
-        isOpen={showCreateModal}
-        onClose={() => setShowCreateModal(false)}
-        onCreated={fetchContracts}
-      />
     </div>
   )
 }
-- 
cgit v1.2.3

