Website
Updates mentioning Website. See the repository ↗ for commits and releases.
@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:
The use-everywhere demo is linked from rxova.org
Every explanation of this library ends with “open a second tab and watch”, and until now there was nothing to open unless you cloned the repo. There is now, and rxova.org links it — so a reader meets the thing before the install line rather than after.
Ten pages behind a sidebar, each one a live thing you operate with the code that is running printed above it. The order is how someone meets the library rather than how the API is organised: shared state first, then the two questions it immediately provokes — what happens when two tabs write the same key, and what happens when the value is a count rather than a fact — then persistence and the coordination primitives, then the parts that matter once it is load-bearing: namespaces, transports, devtools. The demonstrations are the claims that are hard to believe without seeing them. Two counters side by side running the same race, one losing concurrent increments and one that cannot. A version clock table showing which write won and who made it. A sign-out that reaches four tabs in the same millisecond.
It sits on its own origin rather than under
/packages/use-everywhere/with the docs, which is deliberate. The docs are composed into rxova.org under a base path; this has to be opened in two tabs, so it wants an origin, and GitHub Pages gives it one. Routing is hash-based for the same reason — on Pages a path route is a 404 until you add a404.htmlthat impersonates the app, and a deep link that works on first load is the whole point of a page you are asked to open twice.Jonatan Kruszewski
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
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
The docs ingest contract
rxova.org used to check out three repos and build their docs itself, which meant one project’s broken build took the whole site down with it.
Each repo now builds its own docs and ships them as a release asset; the site ingests the artifact. A project either publishes something valid or the site keeps serving the last good copy.
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
rxova.org goes up as an aggregator
One origin, several projects. An Astro landing sits at
/, and each project’s docs are built in its own repo and mounted as a static tree under/packages/<name>/.That keeps every project owning its own docs while readers only ever learn one domain. It also means every cross-project link has to be absolute, which is the first thing the shared chrome had to get right.
Jonatan Kruszewski
No entries match those filters.