Brand
Updates mentioning Brand. See the repository ↗ for commits and releases.
@rxova/brand 1.0.0
@rxova/brandis 1.0, developed in the open for the first time: the package moved from a private repository into the public rxova-website one. It is also smaller than 0.15: design tokens, typefaces and project data, nothing else. The components,astro.css,chrome.css,starlight.cssandsharedStarlightConfighave moved to@rxova/astro-ui, which shipped alongside it.That move is the breaking change. A site that imported a component or a stylesheet from
@rxova/brandtakes it from@rxova/astro-uinow;tokens.css,fonts.css, the assets and the project data stay where they were.chrome.cssno longer defines the short aliases (--bg,--fg,--max, …), so styles read the--rx-*tokens directly.projectFromBaseis now exported from the entry point.Jonatan Kruszewski
@rxova/astro-ui 0.1.0
@rxova/astro-uiis a new package, and the first release is everything on rxova.org that renders: the chrome (SiteShell,Header,SiteFooter,ProjectSwitcher,ThemeToggle,ThemeScript), the Starlight preset and its overrides, the stylesheets, and the primitives (PageHeader,BackLink,ShowMore,VisuallyHidden) that the landing, the blog and the updates stream used to copy around. Until now these lived in@rxova/brand.A docs site spreads
sharedStarlightConfigfrom@rxova/astro-ui/starlight. A plain Astro site imports@rxova/astro-ui/styles/document.cssand the components from@rxova/astro-ui/components/*. There is no barrel: each component has its own path, so a page only loads the CSS of the components it imports. The package depends on@rxova/brandfor the tokens, so a site installs both.Jonatan Kruszewski
The brand moves into the website, and the landing gets a walkthrough
@rxova/brandhas moved out of its private repository and into rxova-website, which is public. Its source, its history from here on and its release process sit next to the landing, the blog, the updates stream and the tooling that assembles rxova.org. One workspace, one gate: the pre-push verify list and CI run the same steps, and every app and package is held to a coverage floor. Playwright now checks the built site’s behaviour, and a local visual check catches layout drift.On the landing, each project has a before/after walkthrough: the code a problem usually ends up as, and the same thing written with the library, one note at a time. Pick a project from the rail and step through it on the stage.
Jonatan Kruszewski
A new rxova.org landing page
The rxova.org landing page now opens straight on the projects. The old hero and its stacked list are replaced by a rail beside a stage: pick a project from the rail, and the stage shows what it does, how to install it and where its docs live.
Every project is tagged zero-dependency, and the page says what that means: each package declares no third-party dependency, which
npm view <pkg> dependenciesconfirms. The page only links to docs that are live.Jonatan Kruszewski
ts-extended-errors is on npm and rxova.org
ts-extended-errors is public. It is a zero-dependency error model for TypeScript applications that throw native exceptions but need more from them:
- typed context:
defineError, with amessageoption that writes the message from the context; - cause-chain inspection;
- JSON round trips:
serializeErroranddeserializeErrorrebuild errors as their own classes, includingAggregateError.
Install it with
npm install ts-extended-errors. Every version is on npm under that name, so no.npmrcline is needed. Its docs are at/packages/ts-extended-errors/, and it appears on the rxova.org landing page.0.4.4 hardens the part that matters most in an error handler: a getter, proxy trap or prototype check that throws while inspecting an unknown value no longer replaces the original failure.
Jonatan Kruszewski
- typed context:
Two new contracts, and Storybook on rxova.org
@rxova/website-schemasgrew two contracts. Page-component bundles: a producer’s artifact now carries only its page bodies, and the website supplies the header, footer, global head and analytics at deploy time. The docs sites moved onto it through one shared mode instead of each repo keeping a copy.And a
storybooksource kind: a project’s workshop ingests like any other source and nests under one/storybook/tree. The react-inputs workshop is the first through — live atrxova.dev/storybook/react-inputs/.Jonatan Kruszewski
Images in posts, validated before they merge
Posts can carry a cover and embed images, optimised through sharp on the way out.
Alt text is required rather than encouraged, and a missing one is a failed build, not a review comment. Every embedded path is checked to resolve on the pull request that writes it — a typo’d image should not survive until the deploy.
Jonatan Kruszewski
The blog and this feed go live
/blogand/updatesare built in the brand repo and mounted on rxova.org as two more sources, through the same ingest path the project docs use.Both now sit under one shared layout with a real menu, and the components rxova.org had duplicated were deleted in favour of the ones
@rxova/brandalready exports.Jonatan Kruszewski
Rxova.org gains a blog and an updates feed
I want to document how Rxova gets built, not only ship it. Two pieces were missing.
The blog is for reasoning — why a design went one way instead of the obvious other way, and what broke on the way there.
This feed is for what actually moved. It filters by repo and by tag, so you can follow one project without reading about the rest.
Jonatan Kruszewski
One Turborepo standard across every repo
Four repos had drifted into four ways of running the same six checks. They now share one Turborepo pipeline and one CI shape, so a fix to the build order is made once.
Node 24, TypeScript 6 and pnpm 11 across all of them, which also got
pnpm auditworking again.Jonatan Kruszewski
A design system for rxova.org
Four surfaces on one origin only feel like one site if they share their tokens.
@rxova/brandholds the colours, type and spacing, a Starlight theme built on them, and the header, footer and project switcher every surface mounts.Social cards are generated from the same tokens rather than drawn by hand, so a palette change reaches the previews too.
Jonatan Kruszewski
No entries match those filters.