diff --git a/app/app.config.ts b/app/app.config.ts index 83c3ede..b384f0a 100644 --- a/app/app.config.ts +++ b/app/app.config.ts @@ -42,6 +42,14 @@ export default defineAppConfig({ list: 'rounded-full', }, }, + prose: { + code: { + // `inline-block` makes a chip unbreakable, so a long token like + // `@vercube/telemetry` pushes itself onto a line of its own on a narrow + // screen. Inline, and allowed to wrap. + base: 'px-1.5 py-0.5 text-sm font-mono font-medium rounded-md inline [overflow-wrap:anywhere] border border-muted text-highlighted bg-muted', + }, + }, }, seo: { siteName: 'Vercube Docs', diff --git a/app/components/Home/Benchmarks.vue b/app/components/Home/Benchmarks.vue index 7c2fbca..9afa3bc 100644 --- a/app/components/Home/Benchmarks.vue +++ b/app/components/Home/Benchmarks.vue @@ -6,7 +6,8 @@ Measurably faster

- Real numbers from the open benchmark suite. Same endpoints, comparable config, January 2026. + A container and decorators, at the speed of a bare router. Same routes, same machine, one run of the open benchmark + suite on Node, September 2026.

@@ -30,41 +31,59 @@ -
-
-
- - {{ row.name }} - - Fastest - - - - {{ format(row.value, activeMetric.unit) }} {{ activeMetric.unit }} +
+
+
+

+ {{ group.title }} +

+ + {{ group.caption }}
-
-
+ +
+
+
+ + {{ row.name }} + + Fastest + + + + {{ format(row.value, activeMetric.unit) }} {{ activeMetric.unit }} + +
+
+
+
+
-

+

+ {{ activeMetric.note }} +

+ +

Lower is better. - Run it yourself: + Node 24, 500 connections, 10s per route. Run it yourself: metrics[active.value]!); -const maxValue = computed(() => Math.max(...activeMetric.value.rows.map((row) => row.value))); +// One scale for both groups of a metric, so the row Vercube shares between them +// is the same width twice and the two groups can be read against each other. +const maxValue = computed(() => Math.max(...activeMetric.value.groups.flatMap((group) => group.rows.map((row) => row.value)))); + +// The badge marks whichever framework actually leads its group. Vercube leads +// one group on one tab, so hard-coding it here would be a lie everywhere else. +function leaderOf(group: BenchGroup): string | undefined { + const best = activeMetric.value.higherIsBetter + ? Math.max(...group.rows.map((row) => row.value)) + : Math.min(...group.rows.map((row) => row.value)); + + return group.rows.find((row) => row.value === best)?.name; +} function barWidth(value: number): number { // Bars represent the real value; min 6% so the smallest is still visible. diff --git a/app/components/Home/Hero.vue b/app/components/Home/Hero.vue index dda5b33..7493b24 100644 --- a/app/components/Home/Hero.vue +++ b/app/components/Home/Hero.vue @@ -16,26 +16,20 @@

-
-

+

+

// {{ page.hero.slug }}

-

+

{{ page.hero.title }}

-

+

{{ page.hero.description }}

-
+
-
+ +
@@ -100,7 +96,9 @@ async function copyInstall() {