diff --git a/docs/analytics-dashboard.png b/docs/analytics-dashboard.png index 287ad06..8771ea2 100644 Binary files a/docs/analytics-dashboard.png and b/docs/analytics-dashboard.png differ diff --git a/packages/chrome/manifest.json b/packages/chrome/manifest.json index cfb8f83..2af861a 100644 --- a/packages/chrome/manifest.json +++ b/packages/chrome/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Agent Blame", - "version": "3.0.3", + "version": "3.0.7", "description": "See AI-generated vs human-written code on GitHub PRs", "icons": { "16": "icons/icon16.png", diff --git a/packages/cli/package.json b/packages/cli/package.json index d8d40ed..57ba88b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@mesadev/agentblame", - "version": "3.0.6", + "version": "3.0.7", "description": "CLI to track AI-generated vs human-written code", "license": "Apache-2.0", "repository": { diff --git a/packages/extension/package.json b/packages/extension/package.json index 544d30e..765c768 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,6 +1,6 @@ { "name": "@agentblame/extension", - "version": "3.0.3", + "version": "3.0.7", "description": "Agent Blame Extension - Shared source for Chrome and Firefox", "private": true, "devDependencies": { diff --git a/packages/extension/src/content/analyticsOverlay.ts b/packages/extension/src/content/analyticsOverlay.ts index e599ca0..df2d60b 100644 --- a/packages/extension/src/content/analyticsOverlay.ts +++ b/packages/extension/src/content/analyticsOverlay.ts @@ -539,10 +539,11 @@ function renderStatsSection(analytics: AnalyticsData): string { ? Math.round((unknownLines / summary.totalLines) * 100) : 0; - // Commit to Prompt ratio - const ratio = summary.commits > 0 ? (summary.prompts / summary.commits).toFixed(1) : "0"; - // Use distinct colors: blue (good) -> amber (medium) -> red (poor) - const ratioColor = parseFloat(ratio) <= 1.5 ? "#0969da" : parseFloat(ratio) <= 2.5 ? "#9a6700" : "#cf222e"; + // Prompt efficiency: commits / prompts (higher = better, 1.0 = ideal) + const efficiency = summary.prompts > 0 ? (summary.commits / summary.prompts) : 0; + const efficiencyStr = efficiency > 0 ? efficiency.toFixed(2) : "0"; + // Use distinct colors: blue (good) -> amber (medium) -> muted (poor) + const ratioColor = efficiency >= 0.67 ? "#539BF5" : efficiency >= 0.4 ? "#C69026" : "#8b949e"; // Build tool breakdown const toolEntries = Object.entries(summary.tools || {}) @@ -554,124 +555,148 @@ function renderStatsSection(analytics: AnalyticsData): string { .sort(([, a], [, b]) => b - a) .slice(0, 5); - // Distinct colors for each card type - const aiColor = "#b86540"; // Coral/orange - const humanColor = "#238636"; // Green + // Distinct colors for each card type (mid-tone, works on light & dark) + const aiColor = "#E07B53"; // Coral/orange + const humanColor = "#57AB5A"; // Green const unknownColor = "#8b949e"; // Gray - const totalColor = "#8957e5"; // Purple + const totalColor = "#A371F7"; // Purple + + // Donut ring SVG helper (percentage as arc) + const donutRing = (percent: number, color: string, size: number = 56) => { + const r = (size - 6) / 2; + const circ = 2 * Math.PI * r; + const offset = circ - (percent / 100) * circ; + return ``; + }; + + // Stacked bar for AI vs Human split + const splitBar = ` +