perf(build): budget the runtime on what ships, not on source bytes

The runtime budgets measured raw source, which counts comments -- and the
production build minifies, so comments cost a visitor nothing. The metric
therefore rewarded deleting explanatory comments over writing smaller code,
and could not tell a real feature from a wall of prose.

They now measure the minified output, which is what is actually served:
/__wrnexus/reactive.js is its own file, minified, with an immutable year-long
cache. The reactive runtime is 69684 minified against a 80000 budget, from
175246 raw -- roughly 21kB gzipped, fetched once.

Also fixes two real bugs found while testing the showcase:

  - object-valued props were serialised as a bare {...} attribute, which the
    compiler read as interpolation and tried to parse as JavaScript. That
    returned 500 for /components/navbar. Arrays start with [ and were never
    affected, which is why only object props broke. All 108 pages now render.

  - the runtime walked text nodes inside textarea, script and style, so a
    JSON sample in a textarea was evaluated away.

Navbar styles move out of ui.css into the component, matching the rest of the
navigation group. No declarations changed: 4519 before and after.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
ClintchizandClaude Opus 5 committed 2026-08-07 21:20:19 +05:30
1 parent 8069541cd9
commit 361129b6ac
68 files changed
+1882 -2422

No files matched your search

@@ -305,7 +305,7 @@ page SplitHeroDetail {
<form class="playground-controls" data-playground-form>
<header><div><span>Component props</span><strong>31 controls</strong></div><button type="reset"><span class="icon-[lucide--rotate-ccw] size-4" aria-hidden="true"></span>Reset</button></header>
<div class="playground-fields"><label class="playground-field" for="playground-split-hero-eyebrow"><span><strong>eyebrow</strong><small>string</small></span><input id="playground-split-hero-eyebrow" name="pg_eyebrow" type="text" value="" /></label><label class="playground-field" for="playground-split-hero-eyebrowIcon"><span><strong>eyebrow Icon</strong><small>string</small></span><input id="playground-split-hero-eyebrowIcon" name="pg_eyebrowIcon" type="text" value="icon-[lucide--sparkles]" /></label><label class="playground-field" for="playground-split-hero-title"><span><strong>title</strong><small>string</small></span><input id="playground-split-hero-title" name="pg_title" type="text" value="Split Hero example" /></label><label class="playground-field" for="playground-split-hero-highlight"><span><strong>highlight</strong><small>string</small></span><input id="playground-split-hero-highlight" name="pg_highlight" type="text" value="" /></label><label class="playground-field" for="playground-split-hero-description"><span><strong>description</strong><small>string</small></span><input id="playground-split-hero-description" name="pg_description" type="text" value="A polished default split hero for a modern application." /></label><label class="playground-field" for="playground-split-hero-primaryLabel"><span><strong>primary Label</strong><small>string</small></span><input id="playground-split-hero-primaryLabel" name="pg_primaryLabel" type="text" value="Split Hero" /></label><label class="playground-field" for="playground-split-hero-primaryHref"><span><strong>primary Href</strong><small>string</small></span><input id="playground-split-hero-primaryHref" name="pg_primaryHref" type="text" value="#split-hero-demo" /></label><label class="playground-field" for="playground-split-hero-primaryIcon"><span><strong>primary Icon</strong><small>string</small></span><input id="playground-split-hero-primaryIcon" name="pg_primaryIcon" type="text" value="" /></label><label class="playground-field" for="playground-split-hero-secondaryLabel"><span><strong>secondary Label</strong><small>string</small></span><input id="playground-split-hero-secondaryLabel" name="pg_secondaryLabel" type="text" value="Split Hero" /></label><label class="playground-field" for="playground-split-hero-secondaryHref"><span><strong>secondary Href</strong><small>string</small></span><input id="playground-split-hero-secondaryHref" name="pg_secondaryHref" type="text" value="#split-hero-demo" /></label><label class="playground-field" for="playground-split-hero-secondaryIcon"><span><strong>secondary Icon</strong><small>string</small></span><input id="playground-split-hero-secondaryIcon" name="pg_secondaryIcon" type="text" value="" /></label><label class="playground-field" for="playground-split-hero-visualPosition"><span><strong>visual Position</strong><small>string</small></span><select id="playground-split-hero-visualPosition" name="pg_visualPosition"><option value="right" selected>right</option><option value="left">left</option></select></label><label class="playground-toggle" for="playground-split-hero-reverse"><span><strong>reverse</strong><small>boolean</small></span><input id="playground-split-hero-reverse" name="pg_reverse" type="checkbox" value="true" data-playground-boolean /><i aria-hidden="true"></i></label><label class="playground-field" for="playground-split-hero-ratio"><span><strong>ratio</strong><small>string</small></span><select id="playground-split-hero-ratio" name="pg_ratio"><option value="balanced" selected>balanced</option><option value="content">content</option><option value="visual">visual</option></select></label><label class="playground-field" for="playground-split-hero-align"><span><strong>align</strong><small>string</small></span><select id="playground-split-hero-align" name="pg_align"><option value="start" selected>start</option><option value="left">left</option><option value="center">center</option><option value="right">right</option><option value="end">end</option><option value="stretch">stretch</option></select></label><label class="playground-field" for="playground-split-hero-size"><span><strong>size</strong><small>string</small></span><select id="playground-split-hero-size" name="pg_size"><option value="default" selected>default</option><option value="xs">xs</option><option value="sm">sm</option><option value="md">md</option><option value="lg">lg</option><option value="xl">xl</option><option value="icon">icon</option><option value="icon-xs">icon-xs</option><option value="icon-sm">icon-sm</option><option value="icon-lg">icon-lg</option></select></label><label class="playground-field" for="playground-split-hero-color"><span><strong>color</strong><small>string</small></span><select id="playground-split-hero-color" name="pg_color"><option value="primary" selected>primary</option><option value="secondary">secondary</option><option value="success">success</option><option value="warning">warning</option><option value="danger">dLine truncated
{
&#123;
"id": "split-hero-0-1",
"key": "split-hero-0-1",
"value": "primary",
@@ -334,31 +334,31 @@ page SplitHeroDetail {
"target": "_self",
"ariaLabel": "Open primary workflow 1",
"items": [
{
&#123;
"label": "Nested option A",
"value": "nested-a"
},
{
&#125;,
&#123;
"label": "Nested option B",
"value": "nested-b"
}
&#125;
],
"links": [
{
&#123;
"label": "Documentation",
"href": "#documentation"
},
{
&#125;,
&#123;
"label": "API reference",
"href": "#api-reference"
}
&#125;
],
"values": [
"Included",
"Standard"
]
},
{
&#125;,
&#123;
"id": "split-hero-0-2",
"key": "split-hero-0-2",
"value": "secondary",
@@ -387,32 +387,32 @@ page SplitHeroDetail {
"target": "_self",
"ariaLabel": "Open primary workflow 2",
"items": [
{
&#123;
"label": "Nested option A",
"value": "nested-a"
},
{
&#125;,
&#123;
"label": "Nested option B",
"value": "nested-b"
}
&#125;
],
"links": [
{
&#123;
"label": "Documentation",
"href": "#documentation"
},
{
&#125;,
&#123;
"label": "API reference",
"href": "#api-reference"
}
&#125;
],
"values": [
"Included",
"Standard"
]
}
&#125;
]</textarea><em data-playground-error></em></label><label class="playground-field" for="playground-split-hero-visualStyle"><span><strong>visual Style</strong><small>string</small></span><input id="playground-split-hero-visualStyle" name="pg_visualStyle" type="text" value="panel" /></label><label class="playground-field" for="playground-split-hero-trustItems"><span><strong>trust Items</strong><small>unknown[]</small></span><textarea id="playground-split-hero-trustItems" name="pg_trustItems" rows="5" spellcheck="false" data-playground-json>[
{
&#123;
"id": "split-hero-0-1",
"key": "split-hero-0-1",
"value": "primary",
@@ -441,31 +441,31 @@ page SplitHeroDetail {
"target": "_self",
"ariaLabel": "Open primary workflow 1",
"items": [
{
&#123;
"label": "Nested option A",
"value": "nested-a"
},
{
&#125;,
&#123;
"label": "Nested option B",
"value": "nested-b"
}
&#125;
],
"links": [
{
&#123;
"label": "Documentation",
"href": "#documentation"
},
{
&#125;,
&#123;
"label": "API reference",
"href": "#api-reference"
}
&#125;
],
"values": [
"Included",
"Standard"
]
},
{
&#125;,
&#123;
"id": "split-hero-0-2",
"key": "split-hero-0-2",
"value": "secondary",
@@ -494,30 +494,30 @@ page SplitHeroDetail {
"target": "_self",
"ariaLabel": "Open primary workflow 2",
"items": [
{
&#123;
"label": "Nested option A",
"value": "nested-a"
},
{
&#125;,
&#123;
"label": "Nested option B",
"value": "nested-b"
}
&#125;
],
"links": [
{
&#123;
"label": "Documentation",
"href": "#documentation"
},
{
&#125;,
&#123;
"label": "API reference",
"href": "#api-reference"
}
&#125;
],
"values": [
"Included",
"Standard"
]
}
&#125;
]</textarea><em data-playground-error></em></label><label class="playground-field" for="playground-split-hero-class"><span><strong>class</strong><small>string</small></span><input id="playground-split-hero-class" name="pg_class" type="text" value="showcase-instance showcase-instance--1" /></label></div>
</form>
</div>