Changelog

What shipped, when.

Onyx is the foundation JXD builds on, so it improves whenever the work does. Every drop lands here.

Jul 23, 2026

  • billing

Organization billing with Stripe

Stripe subscriptions per organization: a free plan and a paid plan billed per seat, with the plan catalog and guards in @onyx/billing. Limits and feature gates are enforced in the UI, in server functions, and in the public API, seat quantities sync automatically as members change, and cancellation runs through the Stripe customer portal. Without Stripe keys configured, checkout is disabled but every guard still works.

Jul 22, 2026

  • auth

Password reset and email verification

Complete email flows for authentication: verification on sign-up and a password reset journey, delivered with React Email templates through Resend. In local development without a Resend key, emails log to the console with their action links so the flows stay testable.

Jul 22, 2026

  • jobs

Crons, background jobs, and workflows

Three kinds of background work on Cloudflare primitives: scheduled jobs on Cron Triggers, typed queue-backed jobs with a dead-letter queue, and durable multi-step workflows. Crons and workflows register in code and merge into the Worker config at build time, so adding one never means editing deployment config in a second place.

Jul 22, 2026

  • docs

Documentation site

A documentation site on Fumadocs and TanStack Start, deployed as its own Worker at onyx-docs.jxd.dev. It includes guides for every package and an OpenAPI reference generated from the real API contract, so the reference can't drift from the implementation.

Jul 22, 2026

  • notifications

In-app notifications and email digests

Typed notifications on Cloudflare primitives: an in-app feed with realtime updates through a Durable Object hub, plus batched email digests for anything left unread. Notification preferences live in settings, and the whole pipeline runs locally under vp dev.

Jul 22, 2026

  • api

Public API with a typed client

A public REST API defined contract-first with oRPC and Zod, authenticated with organization-scoped API keys in the x-api-key header. The contract generates an OpenAPI document and @jxdltd/onyx-client, a typed client published to npm, so consumers get the same types the server compiles against. CI also gained bundle-size budgets with an on-demand analyzer.

Jul 21, 2026

  • ai

AI chat agent

A chat assistant built on the Cloudflare Agents SDK, running as a Durable Object per organization and user. Conversation history persists across sessions, streaming responses render as they arrive, and the whole thing is gated behind the paid plan as a working example of a premium feature.

Jul 21, 2026

  • cli

CLI with browser login

The onyx command line interface, published as @jxdltd/onyx-cli, with an OAuth device-flow login: the CLI opens the browser, you approve the device, and no API key ever gets pasted into a terminal. Releases are automated with Changesets, so every published change lands on npm without manual steps.

Jul 21, 2026

  • storage
  • realtime

File uploads, realtime tasks, and collaborative notes

File storage on R2 with profile photo uploads, plus the realtime layer: a shared task list with live updates, a collaborative notes editor on Yjs, and per-page presence showing who's looking at what. Every page shares one WebSocket room through a Durable Object.