From cfe3ea0aae878ae8f591acdc33a48332ac875b9e Mon Sep 17 00:00:00 2001 From: soryu 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 * 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 * [WIP] Heartbeat checkpoint - 2026-01-29 02:18:40 UTC --------- Co-authored-by: Claude Opus 4.5 --- frontend/src/styles/pc98.css | 644 ------------------------------------------- 1 file changed, 644 deletions(-) (limited to 'frontend/src/styles/pc98.css') diff --git a/frontend/src/styles/pc98.css b/frontend/src/styles/pc98.css index a420115..4dcf15e 100644 --- a/frontend/src/styles/pc98.css +++ b/frontend/src/styles/pc98.css @@ -4621,647 +4621,3 @@ button:focus-visible { display: none; } } - -/* ============================================================================= - Contract List & Detail Styles - ============================================================================= */ - -.contract-list-container, -.contract-detail-container { - padding: 20px; - max-width: 1200px; - margin: 0 auto; - font-family: 'MS Gothic', monospace; - color: #ffffff; -} - -.contract-list-header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 20px; -} - -.contract-list-header h1 { - font-size: 24px; - color: #66ccff; - margin: 0; - text-transform: uppercase; - letter-spacing: 1px; -} - -.create-contract-btn { - appearance: none; - background: linear-gradient(180deg, #004466, #002233); - border: 2px solid #66ccff; - color: #ffffff; - font-family: 'MS Gothic', monospace; - font-size: 13px; - font-weight: bold; - padding: 8px 16px; - cursor: pointer; - border-radius: 4px; - transition: all 0.2s ease; -} - -.create-contract-btn:hover { - background: linear-gradient(180deg, #005577, #003344); - box-shadow: 0 0 10px rgba(102, 204, 255, 0.4); -} - -.contract-list { - list-style: none; - padding: 0; - margin: 0; -} - -.contract-item { - margin-bottom: 15px; - border: 1px solid rgba(102, 204, 255, 0.3); - background: rgba(0, 0, 0, 0.5); - transition: all 0.3s ease; -} - -.contract-item:hover { - border-color: #66ccff; - background: rgba(102, 204, 255, 0.05); -} - -.contract-item a { - display: block; - padding: 15px; - text-decoration: none; - color: inherit; -} - -.contract-item h2 { - font-size: 16px; - color: #ffffff; - margin: 0 0 8px 0; - display: flex; - align-items: center; - gap: 10px; -} - -.contract-item p { - font-size: 13px; - color: rgba(255, 255, 255, 0.7); - margin: 0 0 10px 0; -} - -.contract-meta { - display: flex; - flex-wrap: wrap; - gap: 15px; - font-size: 12px; - color: rgba(102, 204, 255, 0.8); -} - -/* ============================================================================= - Red Team Styling - ============================================================================= */ - -/* Red Team Badge - Contract List and Detail */ -.red-team-badge { - display: inline-flex; - align-items: center; - gap: 4px; - margin-left: 8px; - padding: 2px 8px; - font-size: 12px; - font-weight: normal; - background: linear-gradient(180deg, #4a0000, #2d0000); - border: 1px solid #ff4444; - border-radius: 4px; - color: #ff6666; - vertical-align: middle; - box-shadow: 0 0 6px rgba(255, 68, 68, 0.3); -} - -/* Contract Detail Header */ -.contract-detail-header { - margin-bottom: 20px; -} - -.back-link { - display: inline-block; - font-size: 12px; - color: #66ccff; - text-decoration: none; - margin-bottom: 15px; - transition: opacity 0.3s ease; -} - -.back-link:hover { - opacity: 0.8; -} - -.contract-title { - display: flex; - align-items: center; - gap: 15px; - flex-wrap: wrap; - font-size: 24px; - color: #66ccff; - margin: 0 0 10px 0; -} - -.contract-description { - font-size: 14px; - color: rgba(255, 255, 255, 0.7); - margin: 10px 0; -} - -/* Contract Tabs */ -.contract-tabs { - display: flex; - flex-wrap: wrap; - gap: 5px; - margin-bottom: 20px; - border-bottom: 1px solid rgba(102, 204, 255, 0.3); - padding-bottom: 10px; -} - -.tab-button { - font-family: 'MS Gothic', monospace; - font-size: 12px; - padding: 8px 16px; - border: 1px solid rgba(102, 204, 255, 0.3); - background: rgba(0, 0, 0, 0.3); - color: rgba(255, 255, 255, 0.7); - cursor: pointer; - transition: all 0.3s ease; -} - -.tab-button:hover { - border-color: #66ccff; - color: #ffffff; -} - -.tab-button.active { - background: rgba(102, 204, 255, 0.15); - border-color: #66ccff; - color: #66ccff; -} - -/* Red Team Tab Button */ -.tab-button.red-team-tab { - background: linear-gradient(180deg, #3d0000, #1a0000); - border-color: #ff4444; - color: #ff6666; -} - -.tab-button.red-team-tab:hover { - background: linear-gradient(180deg, #4a0000, #2d0000); - box-shadow: 0 0 8px rgba(255, 68, 68, 0.4); -} - -.tab-button.red-team-tab.active { - background: linear-gradient(180deg, #5c0000, #3d0000); - border-color: #ff6666; - color: #ffffff; - box-shadow: 0 0 12px rgba(255, 68, 68, 0.5); -} - -/* Tab Content */ -.tab-panel { - padding: 20px; - background: rgba(0, 0, 0, 0.3); - border: 1px solid rgba(102, 204, 255, 0.2); -} - -.tab-panel h2 { - font-size: 18px; - color: #66ccff; - margin: 0 0 15px 0; - text-transform: uppercase; - letter-spacing: 1px; -} - -.overview-list { - display: grid; - grid-template-columns: 120px 1fr; - gap: 10px; -} - -.overview-list dt { - color: rgba(255, 255, 255, 0.6); - font-size: 13px; -} - -.overview-list dd { - color: #ffffff; - margin: 0; - font-size: 13px; -} - -/* File/Task/Repository Lists */ -.file-list, -.task-list, -.repository-list { - list-style: none; - padding: 0; - margin: 0; -} - -.file-item, -.task-item, -.repository-item { - padding: 12px; - margin-bottom: 10px; - border: 1px solid rgba(102, 204, 255, 0.2); - background: rgba(0, 0, 0, 0.3); - transition: all 0.3s ease; -} - -.file-item:hover, -.task-item:hover, -.repository-item:hover { - border-color: rgba(102, 204, 255, 0.4); -} - -.file-item a { - text-decoration: none; - color: inherit; -} - -.file-item h3, -.task-item h3, -.repository-item h3 { - font-size: 14px; - color: #ffffff; - margin: 0 0 5px 0; - display: flex; - align-items: center; - gap: 8px; -} - -.file-phase { - font-size: 11px; - color: rgba(102, 204, 255, 0.7); -} - -.task-status { - font-size: 11px; - padding: 2px 8px; - border-radius: 2px; -} - -.task-status.status-pending { - background: rgba(255, 255, 0, 0.15); - color: #ffff00; - border: 1px solid rgba(255, 255, 0, 0.3); -} - -.task-status.status-active, -.task-status.status-running { - background: rgba(0, 255, 0, 0.15); - color: #00ff00; - border: 1px solid rgba(0, 255, 0, 0.3); -} - -.task-status.status-completed { - background: rgba(102, 204, 255, 0.15); - color: #66ccff; - border: 1px solid rgba(102, 204, 255, 0.3); -} - -.task-status.status-failed { - background: rgba(255, 100, 100, 0.15); - color: #ff6464; - border: 1px solid rgba(255, 100, 100, 0.3); -} - -/* Task Badges */ -.task-badge { - margin-right: 6px; - font-size: 14px; -} - -.task-badge.red-team { - color: #ff6666; -} - -.task-badge.supervisor { - color: #66ccff; -} - -.task-item.red-team-task { - border-left: 3px solid #ff4444; -} - -.primary-badge { - font-size: 10px; - padding: 2px 6px; - background: rgba(102, 204, 255, 0.15); - color: #66ccff; - border: 1px solid rgba(102, 204, 255, 0.3); - margin-left: 8px; -} - -.repo-type { - font-size: 11px; - color: rgba(255, 255, 255, 0.6); -} - -/* Red Team Panel */ -.red-team-panel { - background: linear-gradient(180deg, rgba(60, 0, 0, 0.3), rgba(30, 0, 0, 0.3)); - border-left: 3px solid #ff4444; -} - -.red-team-panel h2 { - color: #ff6666; - border-bottom: 2px solid #ff4444; - padding-bottom: 8px; -} - -.red-team-panel h3 { - color: #ffaaaa; - margin-top: 20px; - margin-bottom: 12px; -} - -/* Red Team Prompt Section */ -.red-team-prompt { - background: rgba(0, 0, 0, 0.4); - border: 1px solid #ff4444; - border-radius: 6px; - padding: 12px 16px; - margin-bottom: 16px; -} - -.red-team-prompt h3 { - margin-top: 0; - font-size: 14px; -} - -.red-team-prompt p { - margin: 0; - color: #cccccc; - font-style: italic; -} - -/* Red Team Status */ -.red-team-status { - margin-bottom: 20px; -} - -.red-team-task-info { - display: flex; - align-items: center; - justify-content: space-between; - padding: 12px; - background: rgba(0, 0, 0, 0.3); - border: 1px solid #444; - border-radius: 4px; -} - -.red-team-task-info .task-name { - font-weight: bold; - color: #ffffff; -} - -.no-task, .no-alerts { - color: #888888; - font-style: italic; -} - -/* Red Team Notifications */ -.red-team-notifications { - margin-top: 20px; -} - -.notification-list { - list-style: none; - padding: 0; - margin: 0; -} - -.notification-item { - padding: 12px 16px; - margin-bottom: 12px; - background: rgba(0, 0, 0, 0.4); - border-radius: 6px; - border-left: 4px solid; -} - -.notification-item.severity-info { - border-left-color: #66ccff; - background: linear-gradient(90deg, rgba(0, 80, 150, 0.2), transparent); -} - -.notification-item.severity-warning { - border-left-color: #ffcc00; - background: linear-gradient(90deg, rgba(150, 120, 0, 0.2), transparent); -} - -.notification-item.severity-critical { - border-left-color: #ff4444; - background: linear-gradient(90deg, rgba(150, 0, 0, 0.2), transparent); -} - -.notification-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 8px; -} - -.severity-badge { - padding: 2px 8px; - border-radius: 4px; - font-size: 11px; - font-weight: bold; - letter-spacing: 0.5px; -} - -.severity-badge.info { - background: #003366; - color: #66ccff; - border: 1px solid #66ccff; -} - -.severity-badge.warning { - background: #333300; - color: #ffcc00; - border: 1px solid #ffcc00; -} - -.severity-badge.critical { - background: #660000; - color: #ff4444; - border: 1px solid #ff4444; - animation: pulse-critical 2s infinite; -} - -@keyframes pulse-critical { - 0%, 100% { - box-shadow: 0 0 4px rgba(255, 68, 68, 0.5); - } - 50% { - box-shadow: 0 0 12px rgba(255, 68, 68, 0.8); - } -} - -.notification-time { - font-size: 11px; - color: #888888; -} - -.notification-message { - margin: 0 0 8px 0; - color: #ffffff; - line-height: 1.5; -} - -.notification-file { - display: block; - font-size: 12px; - color: #66ccff; - margin-bottom: 8px; -} - -.notification-context { - margin: 8px 0 0 0; - padding: 8px 12px; - background: rgba(0, 0, 0, 0.5); - border-radius: 4px; - font-size: 12px; - font-family: 'MS Gothic', monospace; - color: #aaaaaa; - white-space: pre-wrap; - overflow-x: auto; -} - -/* ============================================================================= - Contract Create Modal Styles - ============================================================================= */ - -.contract-create-modal { - max-width: 600px; -} - -.contract-create-modal .settings-section:last-child { - border-top: 1px solid #444; - padding-top: 16px; - margin-top: 8px; -} - -.form-input, -.form-textarea, -.form-select { - width: 100%; - padding: 8px 12px; - margin-top: 6px; - background: rgba(0, 0, 0, 0.4); - border: 1px solid #444; - border-radius: 4px; - color: #ffffff; - font-family: 'MS Gothic', monospace; - font-size: 13px; -} - -.form-input:focus, -.form-textarea:focus, -.form-select:focus { - outline: none; - border-color: #66ccff; - box-shadow: 0 0 6px rgba(102, 204, 255, 0.3); -} - -.form-textarea { - resize: vertical; - min-height: 80px; -} - -.form-select { - cursor: pointer; -} - -.form-select option { - background: #000000; - color: #ffffff; -} - -.form-error { - padding: 10px 14px; - margin-bottom: 16px; - background: rgba(255, 0, 0, 0.15); - border: 1px solid #ff4444; - border-radius: 4px; - color: #ff6666; - font-size: 13px; -} - -.checkbox-label { - display: flex; - align-items: center; - gap: 8px; - cursor: pointer; -} - -.checkbox-label span { - color: #ffffff; -} - -.setting-description { - margin-top: 4px; - font-size: 11px; - color: #888888; - padding-left: 24px; -} - -.red-team-prompt-container { - margin-top: 12px; - padding-left: 20px; -} - -.red-team-prompt-container textarea { - background: rgba(60, 0, 0, 0.2); - border-color: #ff4444; -} - -.red-team-prompt-container textarea:focus { - border-color: #ff6666; - box-shadow: 0 0 8px rgba(255, 68, 68, 0.3); -} - -.modal-btn.primary { - background: linear-gradient(180deg, #004466, #002233); - border-color: #66ccff; - color: #ffffff; -} - -.modal-btn.primary:hover { - background: linear-gradient(180deg, #005577, #003344); - box-shadow: 0 0 8px rgba(102, 204, 255, 0.4); -} - -.modal-btn.primary:disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.modal-btn.secondary { - background: linear-gradient(180deg, #333333, #1a1a1a); - border-color: #666666; - color: #cccccc; -} - -.modal-btn.secondary:hover { - background: linear-gradient(180deg, #444444, #2a2a2a); -} - -.loading, -.error, -.not-found { - padding: 40px; - text-align: center; - font-size: 14px; - color: rgba(255, 255, 255, 0.7); -} - -.error { - color: #ff6464; -} -- cgit v1.2.3