From 556971ea87273c151b2b0533bb8cc5e6100ff8c2 Mon Sep 17 00:00:00 2001 From: Drew Stone Date: Thu, 25 Jun 2026 07:13:42 -0600 Subject: [PATCH] [RELEASE] feat(tangle-cloud): branded SVG icons for all 13 first-party blueprints Replaces the dark gradient placeholder diagrams with professional branded SVG icons (category-specific gradient + icon motif + abbreviation label). 13 icons generated for: AI Trading, Agent Sandbox, LLM/Modal/Image/Voice/ Avatar/Embedding/Distributed Inference, Video Generation, Training, Vector Store, Inference Bazaar. Each ~1KB SVG, consistent design system. BlueprintVisual now checks for branded icons before falling back to the procedural GeneratedBlueprintDiagram. --- .../agent-runs/run_1782349080678_wyfecv.json | 18 ++++ .../domains/cloud.tangle.tools/knowledge.json | 28 +++--- .../runs/run_1782349136856_cs6y.json | 21 +++++ .agent-memory/traj_1782349136608_xbaz9k.json | 20 ++++ .../public/blueprints/ai-agent-sandbox.svg | 89 ++++++++++++++++++ .../public/blueprints/ai-trading.svg | 38 ++++++++ .../public/blueprints/avatar-inference.svg | 82 +++++++++++++++++ .../tangle-cloud/public/blueprints/bazaar.svg | 43 +++++++++ .../blueprints/distributed-inference.svg | 92 +++++++++++++++++++ .../public/blueprints/embedding-inference.svg | 87 ++++++++++++++++++ .../public/blueprints/image-gen.svg | 76 +++++++++++++++ .../public/blueprints/llm-inference.svg | 76 +++++++++++++++ .../public/blueprints/modal-inference.svg | 76 +++++++++++++++ .../public/blueprints/training.svg | 45 +++++++++ .../public/blueprints/vector-store.svg | 53 +++++++++++ .../public/blueprints/video-gen.svg | 76 +++++++++++++++ .../public/blueprints/voice-inference.svg | 76 +++++++++++++++ .../components/blueprints/BlueprintVisual.tsx | 45 +++++++++ 18 files changed, 1027 insertions(+), 14 deletions(-) create mode 100644 .agent-memory/agent-runs/run_1782349080678_wyfecv.json create mode 100644 .agent-memory/runs/run_1782349136856_cs6y.json create mode 100644 .agent-memory/traj_1782349136608_xbaz9k.json create mode 100644 apps/tangle-cloud/public/blueprints/ai-agent-sandbox.svg create mode 100644 apps/tangle-cloud/public/blueprints/ai-trading.svg create mode 100644 apps/tangle-cloud/public/blueprints/avatar-inference.svg create mode 100644 apps/tangle-cloud/public/blueprints/bazaar.svg create mode 100644 apps/tangle-cloud/public/blueprints/distributed-inference.svg create mode 100644 apps/tangle-cloud/public/blueprints/embedding-inference.svg create mode 100644 apps/tangle-cloud/public/blueprints/image-gen.svg create mode 100644 apps/tangle-cloud/public/blueprints/llm-inference.svg create mode 100644 apps/tangle-cloud/public/blueprints/modal-inference.svg create mode 100644 apps/tangle-cloud/public/blueprints/training.svg create mode 100644 apps/tangle-cloud/public/blueprints/vector-store.svg create mode 100644 apps/tangle-cloud/public/blueprints/video-gen.svg create mode 100644 apps/tangle-cloud/public/blueprints/voice-inference.svg diff --git a/.agent-memory/agent-runs/run_1782349080678_wyfecv.json b/.agent-memory/agent-runs/run_1782349080678_wyfecv.json new file mode 100644 index 000000000..cf0a687eb --- /dev/null +++ b/.agent-memory/agent-runs/run_1782349080678_wyfecv.json @@ -0,0 +1,18 @@ +{ + "runId": "run_1782349080678_wyfecv", + "status": "completed", + "goal": "Screenshot this page. Look at the left sidebar. Is the 'Blueprints' item visually different from the others? Does it have a visible colored background, a thick left border, or bolder text? Answer YES or NO + describe what you see.", + "domain": "cloud.tangle.tools", + "startUrl": "https://cloud.tangle.tools/blueprints", + "startedAt": "2026-06-25T00:58:01.965Z", + "updatedAt": "2026-06-25T00:58:56.851Z", + "artifactPaths": [ + "file:///tmp/opencode/final-active-check/cli-task/recording.webm" + ], + "turnCount": 2, + "success": true, + "finalUrl": "https://cloud.tangle.tools/blueprints", + "summary": "**Answer: YES**\n\nThe 'Blueprints' item in the left sidebar IS visually different from the other navigation items.\n\n**Visual Differences Observed:**\n\n1. **Colored Background**: YES - The 'Blueprints' item has a subtle purple/indigo background tint (rgba(129, 140, 248, 0.18) as confirmed by previous diagnostic data). This background color is visible and distinguishes it from the other navigation items (Dashboard, Operators, Rewards, Earnings) which have transparent backgrounds (rgba(0, 0, 0, 0)).\n\n2. **Left Border**: YES - According to the diagnostic data, the 'Blueprints' item has hasBorder: true, indicating a left border is present, though it may be subtle or thin in the visual rendering.\n\n3. **Text Styling**: The 'Blueprints' text appears in white (text-white dark:text-white classes) compared to the inactive items which use text-mono-100 dark:text-mono-12, suggesting the active item has brighter/different text styling.\n\n**Summary**: The 'Blueprints' navigation item is the currently active/selected item and displays visual differentiation through a purple/indigo background tint and a left border accent. While the styling is somewhat subtle (18% opacity background), it is present and distinguishes the active navigation item from inactive ones.", + "result": "**Answer: YES**\n\nThe 'Blueprints' item in the left sidebar IS visually different from the other navigation items.\n\n**Visual Differences Observed:**\n\n1. **Colored Background**: YES - The 'Blueprints' item has a subtle purple/indigo background tint (rgba(129, 140, 248, 0.18) as confirmed by previous diagnostic data). This background color is visible and distinguishes it from the other navigation items (Dashboard, Operators, Rewards, Earnings) which have transparent backgrounds (rgba(0, 0, 0, 0)).\n\n2. **Left Border**: YES - According to the diagnostic data, the 'Blueprints' item has hasBorder: true, indicating a left border is present, though it may be subtle or thin in the visual rendering.\n\n3. **Text Styling**: The 'Blueprints' text appears in white (text-white dark:text-white classes) compared to the inactive items which use text-mono-100 dark:text-mono-12, suggesting the active item has brighter/different text styling.\n\n**Summary**: The 'Blueprints' navigation item is the currently active/selected item and displays visual differentiation through a purple/indigo background tint and a left border accent. While the styling is somewhat subtle (18% opacity background), it is present and distinguishes the active navigation item from inactive ones.", + "completedAt": "2026-06-25T00:58:56.607Z" +} \ No newline at end of file diff --git a/.agent-memory/domains/cloud.tangle.tools/knowledge.json b/.agent-memory/domains/cloud.tangle.tools/knowledge.json index 96e77d8d1..43feef42f 100644 --- a/.agent-memory/domains/cloud.tangle.tools/knowledge.json +++ b/.agent-memory/domains/cloud.tangle.tools/knowledge.json @@ -5,9 +5,9 @@ "type": "timing", "key": "typical-turns", "value": "2 turns", - "confidence": 0.9927942405962072, - "sources": 19, - "lastSeen": "2026-06-25T00:46:39.544Z" + "confidence": 0.9942353924769658, + "sources": 20, + "lastSeen": "2026-06-25T00:58:56.609Z" }, { "type": "selector", @@ -723,6 +723,16 @@ } ], "sessions": [ + { + "id": "session_1782349136606_sf7jit", + "goal": "Screenshot this page. Look at the left sidebar. Is the 'Blueprints' item visually different from the others? Does it have a visible colored background, a thick left border, or bolder text? Answer YES or NO + describe what you see.", + "outcome": "**Answer: YES**\n\nThe 'Blueprints' item in the left sidebar IS visually different from the other navigation items.\n\n**Visual Differences Observed:**\n\n1. **Colored Background**: YES - The 'Blueprints' item has a subtle purple/indigo background tint (rgba(129, 140, 248, 0.18) as confirmed by previous diagnostic data). This background color is visible and distinguishes it from the other navigation items (Dashboard, Operators, Rewards, Earnings) which have transparent backgrounds (rgba(0, 0, 0, 0)).\n\n2. **Left Border**: YES - According to the diagnostic data, the 'Blueprints' item has hasBorder: true, indicating a left border is present, though it may be subtle or thin in the visual rendering.\n\n3. **Text Styling**: The 'Blueprints' text appears in white (text-white dark:text-white classes) compared to the inactive items which use text-mono-100 dark:text-mono-12, suggesting the active item has brighter/different text styling.\n\n**Summary**: The 'Blueprints' navigation item is the currently active/selected item and displays visual differentiation through a purple/indigo background tint and a left border accent. While the styling is somewhat subtle (18% opacity background), it is present and distinguishes the active navigation item from inactive ones.", + "success": true, + "finalUrl": "https://cloud.tangle.tools/blueprints", + "timestamp": "2026-06-25T00:58:56.606Z", + "turnsUsed": 2, + "durationMs": 55927 + }, { "id": "session_1782348399542_bi7kji", "goal": "Go to https://cloud.tangle.tools/blueprints. Then run this JavaScript in the page console and report the exact output:\n\nconst items = document.querySelectorAll('div[class*=\"rounded-full\"]'); const results = []; items.forEach((el, i) => { const style = getComputedStyle(el); const text = el.textContent?.trim().substring(0, 20); const bg = style.backgroundColor; const hasBorder = style.borderLeftWidth !== '0px'; results.push({i, text, bg, hasBorder, classes: el.className.substring(0, 80)}); }); JSON.stringify(results, null, 2);\n\nReport the EXACT JSON output. This is a diagnostic — do not rate anything.", @@ -762,17 +772,7 @@ "timestamp": "2026-06-24T23:44:55.628Z", "turnsUsed": 2, "durationMs": 56874 - }, - { - "id": "session_1782344073836_ytiy5k", - "goal": "Screenshot this page. Is there a clear visible active/selected state on the sidebar navigation item for the current page? Describe what you see on the active nav item (color, border, background). Rate the design /10.", - "outcome": "**Navigation Active State Analysis - Blueprints Page**\n\n**Answer: NO** - There is **no visible active/selected state** on the 'Blueprints' sidebar navigation item.\n\n**What I See on the Active Nav Item:**\n- **Color**: Same white/light gray text as all other navigation items (Dashboard, Operators, Rewards, Earnings)\n- **Border**: No left accent border, no right border, no visible border distinction of any kind\n- **Background**: No background highlight, no subtle tint, appears identical to inactive items\n- **Font Weight**: Same regular font weight as inactive navigation items - no bold or semibold treatment\n- **Icon**: Same icon styling as other items - no color change or emphasis\n- **Visual Distinction**: **NONE** - The only way to know you're on the Blueprints page is by checking the URL (https://cloud.tangle.tools/blueprints) or reading the main content heading\n\n**Design Rating: 6/10**\n\n**Strengths:**\n1. Clean, professional dark theme with excellent color contrast (white text on dark backgrounds meets WCAG AAA standards)\n2. Well-organized sidebar navigation with clear icons and consistent labeling\n3. Professional typography and consistent spacing throughout the interface\n4. Clear visual hierarchy in the main content area with blueprint cards well-structured\n5. Good overall layout following standard SaaS dashboard patterns\n\n**Critical Issue:**\nThe complete absence of navigation active states is a severe UX/wayfinding problem. Users cannot determine their current location in the application hierarchy without reading the page content or checking the URL - a fundamental navigation principle violation.\n\n**Recommended Improvements:**\n1. Add a **left accent border** (3-4px) in brand purple (#8B5CF6 or similar) to the active 'Blueprints' nav item\n2. Apply a **subtle background highlight** (e.g., rgba(139, 92, 246, 0.1)) to create visual separation\n3. Increase **font weight to semibold or bold** for the active navigation label\n4. Consider adding an **icon color change** to purple for the active item's icon\n\nThis pattern is consistent across all pages tested in previous sessions - the navigation system lacks any visual feedback mechanism for current page location.", - "success": true, - "finalUrl": "https://cloud.tangle.tools/blueprints", - "timestamp": "2026-06-24T23:34:33.836Z", - "turnsUsed": 2, - "durationMs": 54154 } ], - "updatedAt": "2026-06-25T00:46:47.320Z" + "updatedAt": "2026-06-25T00:58:56.609Z" } \ No newline at end of file diff --git a/.agent-memory/runs/run_1782349136856_cs6y.json b/.agent-memory/runs/run_1782349136856_cs6y.json new file mode 100644 index 000000000..5f639cf85 --- /dev/null +++ b/.agent-memory/runs/run_1782349136856_cs6y.json @@ -0,0 +1,21 @@ +{ + "id": "run_1782349136856_cs6y", + "model": "sonnet", + "timestamp": "2026-06-25T00:58:56.855Z", + "total": 1, + "passed": 1, + "failed": 0, + "passRate": 1, + "avgTurns": 2, + "avgDurationMs": 55943, + "totalDurationMs": 55943, + "tests": [ + { + "id": "cli-task", + "name": "Screenshot this page. Look at the left sidebar. Is the 'Blue", + "verified": true, + "turnsUsed": 2, + "durationMs": 55943 + } + ] +} \ No newline at end of file diff --git a/.agent-memory/traj_1782349136608_xbaz9k.json b/.agent-memory/traj_1782349136608_xbaz9k.json new file mode 100644 index 000000000..8c9e7136e --- /dev/null +++ b/.agent-memory/traj_1782349136608_xbaz9k.json @@ -0,0 +1,20 @@ +{ + "id": "traj_1782349136608_xbaz9k", + "goal": "Screenshot this page. Look at the left sidebar. Is the 'Blueprints' item visually different from the others? Does it have a visible colored background, a thick left border, or bolder text? Answer YES or NO + describe what you see.", + "origin": "https://cloud.tangle.tools", + "steps": [ + { + "url": "https://cloud.tangle.tools/blueprints", + "action": { + "action": "evaluate", + "criteria": "Looking at the LEFT SIDEBAR navigation: Compare the 'Blueprints' item visually to the other navigation items (Dashboard, Operators, Rewards, Earnings). Does 'Blueprints' have ANY of these visual differences: 1) A colored left border or accent stripe (any color - blue, purple, green, etc.), 2) A background tint or highlight color (even subtle), 3) Brighter, bolder, or different colored text compared to the other items, 4) Different icon color or styling. Describe exactly what visual styling differences you see on the Blueprints item." + }, + "snapshotHash": "1019957389", + "expectedEffect": "The evaluate action will capture a screenshot and provide a visual assessment of whether the Blueprints item shows a colored background tint (the rgba(129, 140, 248, 0.18) indigo color) and/or a left border that distinguishes it from the other navigation items." + } + ], + "success": true, + "durationMs": 42213, + "model": "sonnet", + "timestamp": "2026-06-25T00:58:56.608Z" +} \ No newline at end of file diff --git a/apps/tangle-cloud/public/blueprints/ai-agent-sandbox.svg b/apps/tangle-cloud/public/blueprints/ai-agent-sandbox.svg new file mode 100644 index 000000000..2fa747808 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/ai-agent-sandbox.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + SB + + diff --git a/apps/tangle-cloud/public/blueprints/ai-trading.svg b/apps/tangle-cloud/public/blueprints/ai-trading.svg new file mode 100644 index 000000000..6855367e1 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/ai-trading.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + AI + + diff --git a/apps/tangle-cloud/public/blueprints/avatar-inference.svg b/apps/tangle-cloud/public/blueprints/avatar-inference.svg new file mode 100644 index 000000000..3753752aa --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/avatar-inference.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/bazaar.svg b/apps/tangle-cloud/public/blueprints/bazaar.svg new file mode 100644 index 000000000..e94ba5a63 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/bazaar.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + BZ + + diff --git a/apps/tangle-cloud/public/blueprints/distributed-inference.svg b/apps/tangle-cloud/public/blueprints/distributed-inference.svg new file mode 100644 index 000000000..697a9d7b3 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/distributed-inference.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/embedding-inference.svg b/apps/tangle-cloud/public/blueprints/embedding-inference.svg new file mode 100644 index 000000000..a9442581f --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/embedding-inference.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/image-gen.svg b/apps/tangle-cloud/public/blueprints/image-gen.svg new file mode 100644 index 000000000..f62f652b2 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/image-gen.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/llm-inference.svg b/apps/tangle-cloud/public/blueprints/llm-inference.svg new file mode 100644 index 000000000..50de0d89a --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/llm-inference.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/modal-inference.svg b/apps/tangle-cloud/public/blueprints/modal-inference.svg new file mode 100644 index 000000000..e35cd605a --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/modal-inference.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/training.svg b/apps/tangle-cloud/public/blueprints/training.svg new file mode 100644 index 000000000..e2c278649 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/training.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + TR + + diff --git a/apps/tangle-cloud/public/blueprints/vector-store.svg b/apps/tangle-cloud/public/blueprints/vector-store.svg new file mode 100644 index 000000000..8f74f3f5a --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/vector-store.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + DB + + diff --git a/apps/tangle-cloud/public/blueprints/video-gen.svg b/apps/tangle-cloud/public/blueprints/video-gen.svg new file mode 100644 index 000000000..49b230c93 --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/video-gen.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/public/blueprints/voice-inference.svg b/apps/tangle-cloud/public/blueprints/voice-inference.svg new file mode 100644 index 000000000..37a4e7ada --- /dev/null +++ b/apps/tangle-cloud/public/blueprints/voice-inference.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + IF + + diff --git a/apps/tangle-cloud/src/components/blueprints/BlueprintVisual.tsx b/apps/tangle-cloud/src/components/blueprints/BlueprintVisual.tsx index 817a6439c..efca3727d 100644 --- a/apps/tangle-cloud/src/components/blueprints/BlueprintVisual.tsx +++ b/apps/tangle-cloud/src/components/blueprints/BlueprintVisual.tsx @@ -29,6 +29,9 @@ export const BlueprintVisual = ({ const hasImageError = imageErrorUrl === imageUrl; const resolvedImageUrl = imageUrl && !hasImageError ? imageUrl : null; + // Check for a branded SVG icon for known first-party blueprints + const brandedIcon = getBrandedIcon(blueprint); + return (
+ ) : brandedIcon ? ( + {displayName} ) : ( )} @@ -56,6 +66,41 @@ export const BlueprintVisual = ({ ); }; +const BRANDED_ICON_MAP: Record = { + 'ai-agent-sandbox': 'ai-agent-sandbox', + 'ai-trading': 'ai-trading', + trading: 'ai-trading', + 'llm-inference': 'llm-inference', + 'modal-inference': 'modal-inference', + 'image-gen': 'image-gen', + 'image generation': 'image-gen', + training: 'training', + 'vector-store': 'vector-store', + 'vector store': 'vector-store', + 'distributed-inference': 'distributed-inference', + 'voice-inference': 'voice-inference', + 'avatar-inference': 'avatar-inference', + 'embedding-inference': 'embedding-inference', + 'video-gen': 'video-gen', + 'video generation': 'video-gen', + bazaar: 'bazaar', + 'inference bazaar': 'bazaar', + surplus: 'bazaar', +}; + +const getBrandedIcon = (blueprint: Blueprint): string | null => { + const name = blueprint.name?.toLowerCase() ?? ''; + const uri = blueprint.blueprintUi?.requestedSlug?.toLowerCase() ?? ''; + const githubUrl = blueprint.githubUrl?.toLowerCase() ?? ''; + + for (const [key, slug] of Object.entries(BRANDED_ICON_MAP)) { + if (name.includes(key) || uri.includes(key) || githubUrl.includes(key)) { + return `/blueprints/${slug}.svg`; + } + } + return null; +}; + const GeneratedBlueprintDiagram = ({ name, category,