diff --git a/automaton/dashboard/html/dashboard.js b/automaton/dashboard/html/dashboard.js index 306927a..513eca5 100644 --- a/automaton/dashboard/html/dashboard.js +++ b/automaton/dashboard/html/dashboard.js @@ -12,6 +12,7 @@ const COLUMNS = [ { id: 'design', label: 'Design', color: 'design' }, { id: 'test_design', label: 'Test Design', color: 'test_design' }, { id: 'implement', label: 'Implement', color: 'implement' }, + { id: 'code_review', label: 'Code Review', color: 'code_review' }, { id: 'bug_find', label: 'Bug Find', color: 'bug_find' }, { id: 'adv_bug_find', label: 'Adversarial Bug Find', color: 'adv_bug_find' }, { id: 'doc_review', label: 'Doc Review', color: 'doc_review' }, @@ -28,7 +29,7 @@ const PHASE_GROUPS = [ { id: 'planning', label: 'Planning', color: '#42a5f5', states: ['backlog', 'research', 'decomposition'] }, { id: 'design', label: 'Design', color: '#26c6da', states: ['design', 'test_design'] }, { id: 'implementation', label: 'Implementation', color: '#66bb6a', states: ['implement'] }, - { id: 'verification', label: 'Verification', color: '#ffa726', states: ['bug_find', 'adv_bug_find', 'doc_review', 'referee'] }, + { id: 'verification', label: 'Verification', color: '#ffa726', states: ['code_review', 'bug_find', 'adv_bug_find', 'doc_review', 'referee'] }, { id: 'blocked', label: 'Blocked', color: '#ef5350', states: ['blocked'] }, { id: 'resolution', label: 'Resolution', color: '#66bb6a', states: ['done'] }, ]; @@ -37,7 +38,7 @@ const PHASE_GROUPS = [ const STATE_ICONS = { 'backlog': '๐Ÿ“‹', 'research': '๐Ÿ”ฌ', 'decomposition': '๐Ÿ”€', 'design': '๐ŸŽจ', 'test_design': '๐Ÿงช', 'implement': 'โš™๏ธ', - 'bug_find': '๐Ÿ›', 'adv_bug_find': '๐Ÿ”', 'doc_review': '๐Ÿ“', + 'code_review': '๐Ÿ‘๏ธ', 'bug_find': '๐Ÿ›', 'adv_bug_find': '๐Ÿ”', 'doc_review': '๐Ÿ“', 'referee': 'โš–๏ธ', 'done': 'โœ…', 'blocked': 'โŒ' }; @@ -83,7 +84,7 @@ function renderHeader() { const doneTasks = document.getElementById('done-tasks'); const blockedTasks = document.getElementById('blocked-tasks'); const filtered = getFilteredTasks(); - const wipStates = ['research', 'decomposition', 'design', 'test_design', 'implement', 'bug_find', 'adv_bug_find', 'doc_review', 'referee']; + const wipStates = ['research', 'decomposition', 'design', 'test_design', 'implement', 'code_review', 'bug_find', 'adv_bug_find', 'doc_review', 'referee']; totalTasks.textContent = filtered.length; wipTasks.textContent = filtered.filter(t => wipStates.includes(t.state)).length; doneTasks.textContent = filtered.filter(t => t.state === 'done').length; @@ -152,7 +153,8 @@ function renderBoard() { const ARTIFACT_LABELS = { 'research': 'SPEC.md', 'decomposition': 'DECOMPOSITION.md', 'design': 'DESIGN.md', 'test_design': 'TEST_PLAN.md', - 'implement': 'IMPLEMENTATION.md', 'bug_find': 'BUG_REPORT.md', + 'implement': 'IMPLEMENTATION.md', 'code_review': 'CODE_REVIEW.md', + 'bug_find': 'BUG_REPORT.md', 'adv_bug_find': 'ADVERSARIAL_BUG_REPORT.md', 'doc_review': 'DOC_REVIEW.md', 'referee': 'VERDICT.md', }; @@ -258,9 +260,9 @@ function closeDetail() { function renderStats() { const panel = document.getElementById('stats-panel'); const filtered = getFilteredTasks(); - const wipStates = ['research', 'decomposition', 'design', 'test_design', 'implement', 'bug_find', 'adv_bug_find', 'doc_review', 'referee']; + const wipStates2 = ['research', 'decomposition', 'design', 'test_design', 'implement', 'code_review', 'bug_find', 'adv_bug_find', 'doc_review', 'referee']; const total = filtered.length; - const wip = filtered.filter(t => wipStates.includes(t.state)).length; + const wip = filtered.filter(t => wipStates2.includes(t.state)).length; const done = filtered.filter(t => t.state === 'done').length; const blocked = filtered.filter(t => t.state === 'blocked').length; diff --git a/automaton/dashboard/html/index.html b/automaton/dashboard/html/index.html index 0150437..3d1d366 100644 --- a/automaton/dashboard/html/index.html +++ b/automaton/dashboard/html/index.html @@ -44,6 +44,7 @@ + diff --git a/automaton/dashboard/html/styles.css b/automaton/dashboard/html/styles.css index 812bf17..c17992b 100644 --- a/automaton/dashboard/html/styles.css +++ b/automaton/dashboard/html/styles.css @@ -9,8 +9,8 @@ --error: #f28b82; --error-bg: rgba(242,139,130,0.12); --info: #8ab4f8; --info-bg: rgba(138,180,248,0.12); --col-backlog: #9aa0a6; --col-research: #8ab4f8; --col-decomposition: #c7b8d9; - --col-design: #81c995; --col-test_design: #81c995; --col-implement: #a8dab5; - --col-bug_find: #fdd663; --col-adv_bug_find: #f28b82; --col-doc_review: #fde293; + --col-design: #81c995; --col-test_design: #81c995; --col-implement: #a8dab5; + --col-code_review: #80cbc4; --col-bug_find: #fdd663; --col-adv_bug_find: #f28b82; --col-doc_review: #fde293; --col-referee: #c7b8d9; --col-done: #a8dab5; --col-blocked: #f28b82; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --elevation-0: none; @@ -32,8 +32,8 @@ --error: #d93025; --error-bg: rgba(217,48,37,0.08); --info: #1a73e8; --info-bg: rgba(26,115,232,0.08); --col-backlog: #5f6368; --col-research: #1a73e8; --col-decomposition: #9334e6; - --col-design: #188038; --col-test_design: #188038; --col-implement: #34a853; - --col-bug_find: #ea8600; --col-adv_bug_find: #d93025; --col-doc_review: #f9ab00; + --col-design: #188038; --col-test_design: #188038; --col-implement: #34a853; + --col-code_review: #00897b; --col-bug_find: #ea8600; --col-adv_bug_find: #d93025; --col-doc_review: #f9ab00; --col-referee: #9334e6; --col-done: #34a853; --col-blocked: #d93025; --elevation-0: none; --elevation-1: 0 1px 3px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04); @@ -131,6 +131,7 @@ body { .column-header[data-color="design"] { color: var(--col-design); } .column-header[data-color="test_design"] { color: var(--col-design); } .column-header[data-color="implement"] { color: var(--col-implement); } +.column-header[data-color="code_review"] { color: var(--col-code_review); } .column-header[data-color="bug_find"] { color: var(--col-bug_find); } .column-header[data-color="adv_bug_find"] { color: var(--col-adv_bug_find); } .column-header[data-color="doc_review"] { color: var(--col-doc_review); }