Skip to content
The Table Plan

Changelog

What shipped, release by release. Subscribe via RSS or Atom.

AI & marketplace round: RAG chat, listings kit, push, product tours

This round shipped the AI building blocks, completed the marketplace vertical, and rounded out the engagement surface.

Added

  • AI building blocks — a vector-store seam with a pgvector adapter, a universal chunk→embed→store→retrieve RAG pipeline, and an ai-chat module (conversation persistence, fail-closed org token budgets backed by billing metered usage, optional RAG context, streaming over the realtime seam).
  • Marketplace vertical — a listings module (seller catalog with a CAS-guarded lifecycle and facet-source attributes), jsonb facet filters + facet counts on the search seam, and a worked examples/marketplace composition wiring listings, orders, escrow, reviews, and moderation over one bus.
  • Push notifications — FCM, Expo, and Web Push channel adapters with a device-token registry and invalid-token pruning; push joins the notification preferences matrix.
  • Product tours — the ProductTour component grew selector targets, spotlighting, and re-anchoring; a useProductTour hook persists per-browser tour state.
  • Feeds + changelog — RSS 2.0 and Atom feeds for the marketing site, and this curated changelog collection with a draft generator over pending changesets.

AI guardrails round: moderation classifier, prompt templates, mobile recipe

A correctness pass on the AI round plus the guardrail and content tail.

Added

  • AI moderation — an IModerationClassifier seam with an LLM-backed classifier and an OpenAI-moderation-endpoint adapter, plus autoFlagOnEvent, a bus-subscriber factory that bridges content events into the moderation module's flag queue.
  • Prompt templates — a versioned template registry with strict {{var}} interpolation and cost-attribution metadata that feeds the LLM cost tracking, so per-template spend rollups come for free.
  • Mobile recipedocs/patterns/mobile-bff.md: the React Native/Expo path over the existing seams (JWT auth, universal api-client, push device registration, offline queue).
  • OG images — a design-token-derived Open Graph image factory in the SEO package, with per-post images for marketing blog posts on the edge runtime.

Fixed

  • Tenant-scoped vector deletes — vector-store delete-by-ids now requires and filters by the organization id.
  • Exact RAG context budgetsbuildContext charges headers and separators, so output never exceeds maxChars; partial indexing failures throw a typed, retry-safe error.
  • Honest Expo delivery — two-phase receipts (getReceipts) so dead-device pruning fires from receipts, not just ticket-level signals.

Enterprise DX round: SCIM, runtime roles, generator scaffolds

This round focused on the things enterprise evaluations ask about first — and the day-two developer experience of teams building on the template.

Added

  • SCIM 2.0 provisioning/api/scim/v2 Users endpoints so an identity provider (Okta, Entra) can create, deactivate, and update members automatically.
  • Runtime-editable roles — roles and their permission grants can be edited at runtime through the admin surface instead of a redeploy.
  • Generator scaffoldspnpm gen page|settings-screen|email-template join the existing package/module/app generators.
  • Preview deployments — each pull request gets an isolated preview environment wired through the deploy contract.

Changed

  • Performance budgets — bundle-size budgets are now enforced per route (bundle-budgets.json); a regression fails CI rather than shipping.

Hardening round: public API v1, ops drills, session policy

A production-hardening pass across the API surface and the operational story.

Added

  • Public API v1 — a versioned /api/v1 surface with OpenAPI generation and a typed SDK produced from the registry, so integrations build against a contract instead of internal routes.
  • Ops drills — scripted restore/failover drills join the backup scripts, so recovery is a rehearsed procedure rather than a hope.
  • Outbound network ACLs@seatly/net-acl gives modules an allowlist seam for outbound calls.

Changed

  • Session lifecycle policy — absolute max-age and concurrent-session caps are now env-tunable (off by default).