Reverting e8039f9 to diagnose compound rendering regression affecting
all compound types (SPLIT, CHOICE, LOOP, DO_TRY) and error handlers.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
160 lines
10 KiB
HTML
160 lines
10 KiB
HTML
<h2>Execution Overlay: Success + Error Markers</h2>
|
|
<p class="subtitle">Every executed node gets a status badge — green check or red exclamation</p>
|
|
|
|
<div class="mockup">
|
|
<div class="mockup-header">Full route with status markers</div>
|
|
<div class="mockup-body" style="background: #FAFAF8; padding: 20px;">
|
|
<div style="display: flex; align-items: center; gap: 0;">
|
|
|
|
<!-- from:jms (OK) -->
|
|
<div style="position: relative;">
|
|
<div style="width: 140px; height: 52px; background: #F0F9F1; border: 1.5px solid #3D7C47; border-radius: 6px; border-left: 4px solid #3D7C47; overflow: hidden;">
|
|
<div style="height: 5px; background: #1A7F8E;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #1A1612;">from:jms:orders</div>
|
|
<div style="font-size: 9px; color: #9C9184;">ENDPOINT</div>
|
|
</div>
|
|
</div>
|
|
<div style="position: absolute; bottom: 2px; right: 6px; font-size: 8px; color: #3D7C47; font-weight: 500;">2ms</div>
|
|
<!-- Success marker -->
|
|
<div style="position: absolute; top: -6px; right: -6px; width: 16px; height: 16px; background: #3D7C47; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; color: white; font-weight: bold;">✓</div>
|
|
</div>
|
|
|
|
<svg width="30" height="10" style="flex-shrink:0;"><line x1="0" y1="5" x2="25" y2="5" stroke="#3D7C47" stroke-width="1.5"/><polygon points="22,2 28,5 22,8" fill="#3D7C47"/></svg>
|
|
|
|
<!-- log (OK) -->
|
|
<div style="position: relative;">
|
|
<div style="width: 140px; height: 52px; background: #F0F9F1; border: 1.5px solid #3D7C47; border-radius: 6px; border-left: 4px solid #3D7C47; overflow: hidden;">
|
|
<div style="height: 5px; background: #C6820E;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #1A1612;">log:incoming</div>
|
|
<div style="font-size: 9px; color: #9C9184;">LOG</div>
|
|
</div>
|
|
</div>
|
|
<div style="position: absolute; bottom: 2px; right: 6px; font-size: 8px; color: #3D7C47; font-weight: 500;">5ms</div>
|
|
<div style="position: absolute; top: -6px; right: -6px; width: 16px; height: 16px; background: #3D7C47; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; color: white; font-weight: bold;">✓</div>
|
|
</div>
|
|
|
|
<svg width="30" height="10" style="flex-shrink:0;"><line x1="0" y1="5" x2="25" y2="5" stroke="#3D7C47" stroke-width="1.5"/><polygon points="22,2 28,5 22,8" fill="#3D7C47"/></svg>
|
|
|
|
<!-- setHeader (OK) -->
|
|
<div style="position: relative;">
|
|
<div style="width: 140px; height: 52px; background: #F0F9F1; border: 1.5px solid #3D7C47; border-radius: 6px; border-left: 4px solid #3D7C47; overflow: hidden;">
|
|
<div style="height: 5px; background: #C6820E;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #1A1612;">setHeader:type</div>
|
|
<div style="font-size: 9px; color: #9C9184;">SET_HEADER</div>
|
|
</div>
|
|
</div>
|
|
<div style="position: absolute; bottom: 2px; right: 6px; font-size: 8px; color: #3D7C47; font-weight: 500;">1ms</div>
|
|
<div style="position: absolute; top: -6px; right: -6px; width: 16px; height: 16px; background: #3D7C47; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; color: white; font-weight: bold;">✓</div>
|
|
</div>
|
|
|
|
<svg width="30" height="10" style="flex-shrink:0;"><line x1="0" y1="5" x2="25" y2="5" stroke="#3D7C47" stroke-width="1.5"/><polygon points="22,2 28,5 22,8" fill="#3D7C47"/></svg>
|
|
|
|
<!-- bean:validate (FAILED) -->
|
|
<div style="position: relative;">
|
|
<div style="width: 140px; height: 52px; background: #FDF2F0; border: 2px solid #C0392B; border-radius: 6px; overflow: hidden;">
|
|
<div style="height: 5px; background: #C6820E;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #C0392B;">bean:validate</div>
|
|
<div style="font-size: 9px; color: #C0392B;">FAILED</div>
|
|
</div>
|
|
</div>
|
|
<div style="position: absolute; bottom: 2px; right: 6px; font-size: 8px; color: #C0392B; font-weight: 500;">120ms</div>
|
|
<!-- Error marker -->
|
|
<div style="position: absolute; top: -6px; right: -6px; width: 16px; height: 16px; background: #C0392B; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 9px; color: white; font-weight: bold;">!</div>
|
|
</div>
|
|
|
|
<svg width="30" height="10" style="flex-shrink:0;"><line x1="0" y1="5" x2="25" y2="5" stroke="#9CA3AF" stroke-width="1" stroke-dasharray="3,3"/></svg>
|
|
|
|
<!-- to:http (SKIPPED) -->
|
|
<div style="opacity: 0.35;">
|
|
<div style="width: 140px; height: 52px; background: #fff; border: 1px solid #E4DFD8; border-radius: 6px; overflow: hidden;">
|
|
<div style="height: 5px; background: #3D7C47;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #1A1612;">to:http:api</div>
|
|
<div style="font-size: 9px; color: #9C9184;">TO</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<svg width="30" height="10" style="flex-shrink:0;"><line x1="0" y1="5" x2="25" y2="5" stroke="#9CA3AF" stroke-width="1" stroke-dasharray="3,3"/></svg>
|
|
|
|
<!-- to:jms (SKIPPED) -->
|
|
<div style="opacity: 0.35;">
|
|
<div style="width: 140px; height: 52px; background: #fff; border: 1px solid #E4DFD8; border-radius: 6px; overflow: hidden;">
|
|
<div style="height: 5px; background: #3D7C47;"></div>
|
|
<div style="padding: 4px 8px;">
|
|
<div style="font-size: 10px; font-weight: 600; color: #1A1612;">to:jms:result</div>
|
|
<div style="font-size: 9px; color: #9C9184;">TO</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 style="margin-top: 24px;">Node State Legend</h3>
|
|
<div style="display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px;">
|
|
|
|
<!-- Completed -->
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<div style="position: relative; width: 80px; height: 36px; background: #F0F9F1; border: 1.5px solid #3D7C47; border-radius: 4px; border-left: 3px solid #3D7C47;">
|
|
<div style="position: absolute; top: -5px; right: -5px; width: 14px; height: 14px; background: #3D7C47; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 8px; color: white;">✓</div>
|
|
<div style="position: absolute; bottom: 1px; right: 4px; font-size: 7px; color: #3D7C47;">5ms</div>
|
|
</div>
|
|
<div>
|
|
<div style="font-size: 12px; font-weight: 600; color: #3D7C47;">Completed</div>
|
|
<div style="font-size: 10px; color: #9C9184;">Green tint + border + check badge + duration</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Failed -->
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<div style="position: relative; width: 80px; height: 36px; background: #FDF2F0; border: 2px solid #C0392B; border-radius: 4px;">
|
|
<div style="position: absolute; top: -5px; right: -5px; width: 14px; height: 14px; background: #C0392B; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 8px; color: white; font-weight: bold;">!</div>
|
|
<div style="position: absolute; bottom: 1px; right: 4px; font-size: 7px; color: #C0392B;">120ms</div>
|
|
</div>
|
|
<div>
|
|
<div style="font-size: 12px; font-weight: 600; color: #C0392B;">Failed</div>
|
|
<div style="font-size: 10px; color: #9C9184;">Red tint + border + ! badge + duration</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Sub-route failure -->
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<div style="position: relative; width: 80px; height: 36px; background: #FDF2F0; border: 2px solid #C0392B; border-radius: 4px;">
|
|
<div style="position: absolute; top: -5px; right: -5px; width: 14px; height: 14px; background: #C0392B; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 8px; color: white; font-weight: bold;">!</div>
|
|
<div style="position: absolute; bottom: 1px; left: 4px; font-size: 8px; color: #C0392B;">↴</div>
|
|
<div style="position: absolute; bottom: 1px; right: 4px; font-size: 7px; color: #C0392B;">85ms</div>
|
|
</div>
|
|
<div>
|
|
<div style="font-size: 12px; font-weight: 600; color: #C0392B;">Sub-route Failure</div>
|
|
<div style="font-size: 10px; color: #9C9184;">Same as failed + drill-down arrow</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Skipped -->
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<div style="opacity: 0.35; width: 80px; height: 36px; background: #fff; border: 1px solid #E4DFD8; border-radius: 4px;">
|
|
</div>
|
|
<div>
|
|
<div style="font-size: 12px; font-weight: 600; color: #9C9184;">Skipped</div>
|
|
<div style="font-size: 10px; color: #9C9184;">35% opacity, no badge, no duration</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 style="margin-top: 24px;">Edge States</h3>
|
|
<div style="display: flex; gap: 16px; flex-wrap: wrap; margin-top: 8px;">
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<svg width="60" height="10"><line x1="0" y1="5" x2="50" y2="5" stroke="#3D7C47" stroke-width="1.5"/><polygon points="47,2 53,5 47,8" fill="#3D7C47"/></svg>
|
|
<div style="font-size: 11px; color: #5C5347;"><strong>Traversed</strong> — green, solid</div>
|
|
</div>
|
|
<div style="display: flex; align-items: center; gap: 8px; background: #f8f8f6; padding: 10px 14px; border-radius: 6px;">
|
|
<svg width="60" height="10"><line x1="0" y1="5" x2="50" y2="5" stroke="#9CA3AF" stroke-width="1" stroke-dasharray="3,3"/><polygon points="47,2 53,5 47,8" fill="#9CA3AF"/></svg>
|
|
<div style="font-size: 11px; color: #5C5347;"><strong>Not traversed</strong> — gray, dashed</div>
|
|
</div>
|
|
</div>
|