diff --git a/src/ui/webviewPanel.ts b/src/ui/webviewPanel.ts index 2c9417b..c570c34 100644 --- a/src/ui/webviewPanel.ts +++ b/src/ui/webviewPanel.ts @@ -820,3 +820,552 @@ export class ProofCodeWebviewPanel { } .routes-section-card { + background: rgba(30, 41, 59, 0.4); + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 8px; + padding: 12px 16px; + margin-top: 16px; + } + + .route-item-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 6px 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.04); + } + + .route-item-row:last-child { + border-bottom: none; + } + + .route-badge { + font-size: 10px; + font-weight: 700; + padding: 2px 6px; + border-radius: 4px; + background: rgba(59, 130, 246, 0.2); + color: #60A5FA; + margin-right: 8px; + } + + /* Rules Table */ + .rules-table { + width: 100%; + border-collapse: collapse; + margin-top: 10px; + } + + .rules-table th, .rules-table td { + padding: 12px; + text-align: left; + border-bottom: 1px solid var(--card-border); + } + + .rules-table th { + color: var(--text-muted); + font-size: 11px; + text-transform: uppercase; + letter-spacing: 0.5px; + } + + .empty-state { + text-align: center; + padding: 48px; + color: var(--text-muted); + } + + +
+ +No SQL injection, missing authorization, hardcoded secrets, or unhandled errors found in changed files.
+${r.description}
+ + ${ + r.evidenceTrace.length > 0 + ? `${escapeHtml(r.snippet)}No modified core services with untested dependents, critical route vulnerabilities, or rule breaches found.
+Impact: ${b.detail}
+ ${ + b.affectedCallersOrRoutes.length > 0 + ? `${c}`
+ )
+ .join(' ')}
+ ${escapeHtml(path.relative(report?.repoRoot || '', sym.filePath))}
+ | Status | +Project Rule | +Evidence / Details | +Action | +
|---|---|---|---|
| No rules defined. Click "Edit Rules" to create .proofcode/rules.md. | |||
| + + ${r.status} + + | +
+ ${r.rule.title}
+ ${r.rule.description}
+ |
+ + ${r.detectedMessage || 'Compliant with policy.'} + | ++ ${ + r.file && r.line + ? `` + : '—' + } + | +
| Check Name | +Status | +Details | +
|---|---|---|
| ${checks.typescript.name} | +${checks.typescript.status} | +${checks.typescript.message || 'Pass'} | +
| ${checks.eslint.name} | +${checks.eslint.status} | +${checks.eslint.message || 'Pass'} | +
| ${checks.unitTests.name} | +${checks.unitTests.status} | +${checks.unitTests.message || 'Pass'} | +
| ${checks.build.name} | +${checks.build.status} | +${checks.build.message || 'Pass'} | +
| No live checks configured yet. | ||