docs: add banner + how-it-works SVG diagrams to README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
<p align="center">
|
||||
<img src="assets/banner.svg" alt="ComfyUI-Tenaciousload" width="100%">
|
||||
</p>
|
||||
|
||||
# ComfyUI-Tenaciousload
|
||||
|
||||
Self-contained fix for slow / black-screen ComfyUI loading when you have a huge
|
||||
@@ -11,6 +15,11 @@ build on every page load** — and the build **freezes ComfyUI's whole event
|
||||
loop**, so you get a long black screen, worst over a remote network.
|
||||
|
||||
## How this pack fixes it
|
||||
|
||||
<p align="center">
|
||||
<img src="assets/how-it-works.svg" alt="How it works: requests are served from an in-process cache in milliseconds; the slow build only runs on a miss or refresh" width="100%">
|
||||
</p>
|
||||
|
||||
On load it injects an aiohttp **middleware** into ComfyUI that intercepts
|
||||
`/object_info` and `/api/object_info` and:
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<svg width="880" height="260" viewBox="0 0 880 260" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="ComfyUI-Tenaciousload — instant page loads for massive model and LoRA libraries">
|
||||
<defs>
|
||||
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#0b0b0f"/>
|
||||
<stop offset="1" stop-color="#1a1a22"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#60a5fa"/>
|
||||
<stop offset="0.55" stop-color="#a78bfa"/>
|
||||
<stop offset="1" stop-color="#ff9cf9"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="bolt" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#bae6fd"/>
|
||||
<stop offset="1" stop-color="#60a5fa"/>
|
||||
</linearGradient>
|
||||
<filter id="glow" x="-60%" y="-60%" width="220%" height="220%">
|
||||
<feGaussianBlur stdDeviation="5" result="b"/>
|
||||
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
|
||||
</filter>
|
||||
</defs>
|
||||
|
||||
<rect x="2" y="2" width="876" height="256" rx="26" fill="url(#bg)" stroke="#27272a" stroke-width="2"/>
|
||||
<rect x="2" y="2" width="9" height="256" rx="4.5" fill="url(#accent)"/>
|
||||
|
||||
<!-- icon badge with lightning bolt (speed) -->
|
||||
<g transform="translate(48,70)">
|
||||
<rect width="120" height="120" rx="30" fill="#111118" stroke="url(#accent)" stroke-width="2.5"/>
|
||||
<path d="M68 20 L42 66 L60 66 L50 102 L86 52 L64 52 Z" fill="url(#bolt)" filter="url(#glow)"/>
|
||||
</g>
|
||||
|
||||
<!-- wordmark -->
|
||||
<text x="208" y="84" font-family="Segoe UI, Helvetica, Arial, sans-serif" font-size="19" letter-spacing="7" font-weight="600" fill="#71717a">COMFYUI</text>
|
||||
<text x="205" y="150" font-family="Segoe UI, Helvetica, Arial, sans-serif" font-size="58" font-weight="800" fill="url(#accent)">Tenaciousload</text>
|
||||
<text x="208" y="187" font-family="Segoe UI, Helvetica, Arial, sans-serif" font-size="19" fill="#a1a1aa">Instant page loads for massive model & LoRA libraries.</text>
|
||||
|
||||
<!-- speed pills: before vs after -->
|
||||
<g transform="translate(208,206)" font-family="Consolas, ui-monospace, monospace" font-size="15" font-weight="600">
|
||||
<rect width="156" height="34" rx="17" fill="#1f1216" stroke="#7f1d1d" stroke-width="1.5"/>
|
||||
<text x="20" y="22" fill="#fca5a5">cold build 234 s</text>
|
||||
<text x="176" y="24" font-size="20" fill="#52525b">→</text>
|
||||
<rect x="206" width="150" height="34" rx="17" fill="#0d1a13" stroke="#166534" stroke-width="1.5"/>
|
||||
<text x="226" y="22" fill="#86efac">cached 4 ms</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,71 @@
|
||||
<svg width="880" height="300" viewBox="0 0 880 300" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="How ComfyUI-Tenaciousload works: browser requests are served from an in-process cache in milliseconds; the slow build only runs on a miss or refresh.">
|
||||
<defs>
|
||||
<linearGradient id="bg2" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0" stop-color="#0b0b0f"/>
|
||||
<stop offset="1" stop-color="#16161d"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="acc2" x1="0" y1="0" x2="1" y2="0">
|
||||
<stop offset="0" stop-color="#60a5fa"/>
|
||||
<stop offset="1" stop-color="#a78bfa"/>
|
||||
</linearGradient>
|
||||
<marker id="ah-blue" markerWidth="10" markerHeight="8" refX="8" refY="3" orient="auto" markerUnits="userSpaceOnUse">
|
||||
<path d="M0,0 L8,3 L0,6 Z" fill="#60a5fa"/>
|
||||
</marker>
|
||||
<marker id="ah-green" markerWidth="10" markerHeight="8" refX="8" refY="3" orient="auto" markerUnits="userSpaceOnUse">
|
||||
<path d="M0,0 L8,3 L0,6 Z" fill="#34d399"/>
|
||||
</marker>
|
||||
<marker id="ah-gray" markerWidth="10" markerHeight="8" refX="8" refY="3" orient="auto" markerUnits="userSpaceOnUse">
|
||||
<path d="M0,0 L8,3 L0,6 Z" fill="#71717a"/>
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<rect x="2" y="2" width="876" height="296" rx="24" fill="url(#bg2)" stroke="#27272a" stroke-width="2"/>
|
||||
<text x="40" y="48" font-family="Segoe UI, Helvetica, Arial, sans-serif" font-size="22" font-weight="700" fill="#e4e4e7">How it works</text>
|
||||
|
||||
<!-- Browser -->
|
||||
<g font-family="Segoe UI, Helvetica, Arial, sans-serif">
|
||||
<rect x="44" y="120" width="176" height="84" rx="16" fill="#111118" stroke="#3f3f46" stroke-width="2"/>
|
||||
<text x="132" y="156" font-size="20" font-weight="700" fill="#e4e4e7" text-anchor="middle">Browser</text>
|
||||
<text x="132" y="180" font-size="13" fill="#a1a1aa" text-anchor="middle">loads ComfyUI</text>
|
||||
</g>
|
||||
|
||||
<!-- Tenaciousload cache (center) -->
|
||||
<g font-family="Segoe UI, Helvetica, Arial, sans-serif">
|
||||
<rect x="350" y="100" width="204" height="124" rx="18" fill="#10131c" stroke="url(#acc2)" stroke-width="2.5"/>
|
||||
<text x="452" y="134" font-size="19" font-weight="800" fill="#bfdbfe" text-anchor="middle">Tenaciousload</text>
|
||||
<text x="452" y="156" font-size="13" fill="#a1a1aa" text-anchor="middle">in-process middleware</text>
|
||||
<!-- disk/cache glyph -->
|
||||
<g transform="translate(420,170)">
|
||||
<ellipse cx="32" cy="6" rx="32" ry="9" fill="#1e293b" stroke="#60a5fa" stroke-width="1.5"/>
|
||||
<path d="M0 6 V26 a32 9 0 0 0 64 0 V6" fill="#1e293b" stroke="#60a5fa" stroke-width="1.5"/>
|
||||
<ellipse cx="32" cy="6" rx="32" ry="9" fill="#0f172a"/>
|
||||
<ellipse cx="32" cy="6" rx="32" ry="9" fill="none" stroke="#60a5fa" stroke-width="1.5"/>
|
||||
</g>
|
||||
<text x="452" y="216" font-size="12" fill="#86efac" text-anchor="middle">memory + disk · survives restarts</text>
|
||||
</g>
|
||||
|
||||
<!-- ComfyUI build (right) -->
|
||||
<g font-family="Segoe UI, Helvetica, Arial, sans-serif">
|
||||
<rect x="686" y="120" width="160" height="84" rx="16" fill="#111118" stroke="#3f3f46" stroke-width="2"/>
|
||||
<text x="766" y="153" font-size="18" font-weight="700" fill="#e4e4e7" text-anchor="middle">ComfyUI</text>
|
||||
<text x="766" y="176" font-size="12.5" fill="#a1a1aa" text-anchor="middle">builds object_info</text>
|
||||
</g>
|
||||
|
||||
<!-- Browser -> cache (request) -->
|
||||
<line x1="224" y1="138" x2="346" y2="138" stroke="#60a5fa" stroke-width="2.5" marker-end="url(#ah-blue)"/>
|
||||
<text x="285" y="129" font-family="Consolas, ui-monospace, monospace" font-size="12.5" fill="#93c5fd" text-anchor="middle">GET /object_info</text>
|
||||
|
||||
<!-- cache -> Browser (fast HIT) -->
|
||||
<line x1="346" y1="186" x2="224" y2="186" stroke="#34d399" stroke-width="2.5" marker-end="url(#ah-green)"/>
|
||||
<text x="285" y="204" font-family="Consolas, ui-monospace, monospace" font-size="12.5" font-weight="700" fill="#6ee7b7" text-anchor="middle">HIT · gzip · ~4 ms</text>
|
||||
|
||||
<!-- cache -> ComfyUI (miss/refresh, slow, dashed) -->
|
||||
<line x1="558" y1="138" x2="682" y2="138" stroke="#71717a" stroke-width="2.5" stroke-dasharray="6 5" marker-end="url(#ah-gray)"/>
|
||||
<text x="620" y="129" font-family="Consolas, ui-monospace, monospace" font-size="12" fill="#a1a1aa" text-anchor="middle">miss / refresh</text>
|
||||
|
||||
<!-- ComfyUI -> cache (store) -->
|
||||
<line x1="682" y1="186" x2="558" y2="186" stroke="#71717a" stroke-width="2.5" stroke-dasharray="6 5" marker-end="url(#ah-gray)"/>
|
||||
<text x="620" y="204" font-family="Consolas, ui-monospace, monospace" font-size="12" fill="#a1a1aa" text-anchor="middle">build once · store</text>
|
||||
|
||||
<text x="440" y="272" font-family="Segoe UI, Helvetica, Arial, sans-serif" font-size="13.5" fill="#71717a" text-anchor="middle">Normal loads never reach the build — the ~234 s build runs only on the first load or an explicit refresh.</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
Reference in New Issue
Block a user