feat: the 1.3 announcement, fresh benchmark numbers, and mobile fixes - #23
Draft
devol-bot wants to merge 4 commits into
Draft
feat: the 1.3 announcement, fresh benchmark numbers, and mobile fixes#23devol-bot wants to merge 4 commits into
devol-bot wants to merge 4 commits into
Conversation
Sections in the order the release actually matters: the cheaper request path, the queue module, devtools rebuilt as a telemetry consumer, then the telemetry that all three sit on, with introspection and the logger hooks after it because both read as footnotes to telemetry. The performance section reports 1.2.1 against 1.3 from a run of its own, alternating the two versions on one machine: +3.1% on a route with parameters, +2.5% on a JSON body, and the plain route unchanged, which is the honest tell since neither change can reach a static route that takes no arguments. It also carries the two costs: the bundle grew 267.6 KB to 294.5 KB, and the route matcher compiles on first use through `new Function`. Still needs a video: `public/video/devtools/Queues.mp4` does not exist yet, and the section links it. There is a TODO comment above the tag.
Numbers come from results/results.md in vercube/benchmarks, a full run of the suite on one machine. Vercube now leads five of the six cells: first on all three workloads against the JS routers, and first on plain text and on a JSON body against the frameworks that also ship a container. Two changes to the shape as well. The rows are split into the two questions a reader actually has, "how does it compare to a bare router" and "how does it compare to what I would otherwise pick", because one list mixing both answered neither. And the "Fastest" badge is computed per group instead of being pinned to Vercube, which now matters: Rikta leads the container group on the query route. Both groups share one scale per metric, so the row Vercube appears in twice is the same width twice and the two groups can be read against each other.
The first screen ended in dead space: with min-h-[78vh] plus padding the code window started about a hundred pixels below the fold, so the page opened on a title card and nothing else. At 60vh its top edge lands inside the first screen and the fold crops it, which is what invites the scroll. Also: a denser scrim under the headline, because the display face is built from dots and so is the particle field behind it, so the two were competing; five staggered entrances collapsed into two beats, the title card then the file; and a focus-visible ring on the install command, which had none. Layout, type scale and copy are untouched.
Three separate faults, all only visible below the md breakpoint. The article body had no gutter. `max-w-3xl mx-auto` is wider than a phone, so `mx-auto` had nothing to centre and the text ran edge to edge. It now carries px-4, which matches the !p-4 of the title block above it, so both left edges line up. The header collided with the logo. The nav is positioned absolutely, its lower edge sitting around 62px, and the post container started at mt-8. The date line was rendering underneath the logo mark. The container now has real top padding at every breakpoint rather than only at xl. Body text sat on the bright halftone. The backdrop fades to transparent on the right, which works while the text column is on the left, but on a phone the column spans the full width and the fading end left half of every line without a backing. A scrim below md fixes it. And inline code could not wrap: Nuxt UI gives it `inline-block`, which makes a chip unbreakable, so a token like `@vercube/telemetry` pushed itself onto a line of its own. Now inline, with overflow-wrap. This one applies to the docs too, which had the same problem.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Everything the 1.3 release needs on the site, plus three mobile faults found
while reading the post on a phone.
Do not merge until 1.3.0 is on npm. The post says the release is out and the
benchmark numbers come from code that is on
mainin the framework repo but notyet published.
The announcement post
content/blog/3.announcing-1.3.md. Sections run in the order the releasematters: the cheaper request path, the queue module, devtools rebuilt as a
telemetry consumer, then the telemetry all three sit on. Introspection and the
logger hooks come after it, because both open by referring to telemetry and read
as footnotes to it.
The performance section reports 1.2.1 against 1.3 from a dedicated run,
alternating the two versions on one machine, four rounds per route:
GET /GET /id/:id?name=POST /jsonThe plain route not moving is the honest tell rather than a weak spot: it takes
no arguments and its path is static, so neither of the changes behind those
numbers can reach it. The section also carries both costs, the bundle growing
from 267.6 KB to 294.5 KB and the route matcher compiling on first use.
Blocked on a video.
public/video/devtools/Queues.mp4does not exist yetand the Queues paragraph links it. There is a TODO comment directly above the
tag. The video element will render empty until that file lands.
The benchmark section
Fresh numbers from
results/results.mdin vercube/benchmarks, a full run of thesuite on one machine. Vercube leads five of the six cells: all three workloads
against the JS routers, and plain text and JSON body against the frameworks that
also ship a container.
Two changes to the shape. Rows are split into the two questions a reader
actually has - how it compares to a bare router, and how it compares to what
they would otherwise pick - because one list mixing both answered neither. And
the "Fastest" badge is computed per group rather than pinned to Vercube, which
now matters: Rikta leads the container group on the query route.
Still open, and worth a decision before this ships. Three node targets are
faster than Vercube and are not on the chart:
uws(169,005 on plain text),hyper-express(124,616) andultimate-express(163,799). All three areuWebSockets, so a native binding rather than a JS framework, which is a
principled reason to keep them apart - but the page does not say so, it simply
omits them, while linking the results file where anyone can find them in a
minute. Either the caption should name the exclusion or the chart should include
them in a group of their own.
Mobile fixes
Three separate faults, all below the
mdbreakpoint.max-w-3xl mx-autois wider than a phone,so
mx-autohad nothing to centre and the text ran edge to edge.px-4nowmatches the
!p-4of the title block, so the two left edges line up.its lower edge around 62px and the post container started at
mt-8, so thedate line rendered under the logo mark. Real top padding at every breakpoint
now, not only at
xl.the right, which is fine while the text column is on the left, but on a phone
the column spans the full width. A scrim below
mdbacks it.Plus one that was not mobile-specific: inline code could not wrap. Nuxt UI
gives it
inline-block, which makes a chip unbreakable, so@vercube/telemetrypushed itself onto a line of its own. Inline with
overflow-wrapnow. This oneapplies to the docs as well, which had the same problem, so that is worth a look
on a dense page.
The hero
Vertical rhythm only. With
min-h-[78vh]plus padding the code window startedabout a hundred pixels below the fold, so the first screen was a title card and
then nothing. At
60vhits top edge lands inside the first screen and the foldcrops it. Also a denser scrim under the headline, because the display face is
built from dots and so is the field behind it; five staggered entrances
collapsed into two beats; and a focus ring on the install command, which had
none.
Layout, type scale and copy are untouched. An earlier pass moved the code beside
the headline and rewrote the slogan; both were reverted.
Checks
pnpm test:lintclean.pnpm test:tscheckreports the same two pre-existingOgImageComponentserrors asmaindoes, inapp/pages/blog/[...slug].vueandapp/pages/blog/index.vue, neither touched by these commits. Verified against adev server: all three posts, the blog index, the home page and a docs page
return 200. Not verified visually at phone width - I have no browser here, so
the mobile fixes were made by reading the layout.