Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, this project adheres to Semantic Versioning, commits follow Conventional Commits, and this changelog is generated by Structured Changelog.

Unreleased

v0.4.0 - 2026-10-20

Highlights

  • @plexusone/console 0.1.0: the organization console's pages, to connect and manage an organization's services, served by SystemAuth under /console
  • Product switchers list applications in catalog order everywhere, and carry the sidebar state and theme to the application they open

Added

  • @plexusone/console: consoleApp lists an organization's connections with their account, rotation and expiry, tests, replaces, renames and disconnects them, and offers a gallery and a wizard built from each service's manifest (9bdc143)
  • createConsoleApp({ nextSteps }) links a connection to the products that use it, after connecting and on each usable connection (1a8729e)
  • The console adds connection_id to the return address, so the linking application can select the connection just made (ff92711)
  • createHost accepts basename to serve an application under a path such as /console (5e2e513)
  • carryPreferences and adoptCarriedPreferences carry the sidebar state and theme between applications as a URL fragment; ProductSwitcher links carry them (91708c1)

Changed

  • ProductSwitcher highlights the current application in its catalog place instead of moving it first; an application the catalog does not list still comes first (07f5e9e)

Documentation

  • @plexusone/console package guide and createHost's basename (10b56ea)
  • Console next steps (8514a17)
  • Shell guide covers the switcher's order and carrying the sidebar and theme; composition and README updated
  • v0.4.0 release notes

Tests

  • Cover the console's list, gallery, wizard, returned connection and next steps (4227bd2)
  • Cover routing relative to the basename (f368cee)
  • Cover the switcher's stable order (5365a3e)
  • Resolve workspace packages by exact name, so subpath exports such as @plexusone/host/testing resolve to their own source (aae9977)

v0.3.1 - 2026-10-15

Highlights

  • renderApp from @plexusone/host/testing works with pages that call useAppContext from @plexusone/host

Upgrade Guide

  • Use @plexusone/host 0.3.1; the other packages are unchanged

Fixed

  • The main and testing entries of @plexusone/host share one app context; in 0.3.0 each bundle had its own, so useAppContext threw inside renderApp (a3b7160)

Documentation

  • The releasing guide says to sign in right before publishing and to check staging before concluding a publish failed (767472c)

Tests

  • A test loads the built entries and checks they share the app context (b6e0379)

v0.3.0 - 2026-10-15

Highlights

  • @plexusone/host: an application exports its pages as an AppModule and never imports a shell; a stack hosts it with its own Shell through createHost, and the same module runs on its own in DevShell
  • DevShell and a development session run an application's interface with no backend
  • @plexusone/host/testing renders an application as createHost would, for the application's own tests

Upgrade Guide

  • @plexusone/host is new at 0.3.0; it needs @plexusone/shell and @plexusone/auth 0.2.1 or later, React 19, and react-router 7 or 8. The other packages are unchanged

Added

  • AppModule, AppContext, useAppContext and Shell (05744c3)
  • DevShell, devSession and devSessionClient (ae98737)
  • createHost, HostRoutes and HostSession: the session, the router under /orgs/:org, choosing an organization, not-found and no-access pages, and the sign-in redirect (e296d1f)
  • renderApp and conformanceProblems in @plexusone/host/testing (eebf56c)

Documentation

  • The @plexusone/host package page and a guide to writing an application (0866f1b)
  • INIT-SYSTEMFORGEWEB-001 adds the app contract and hosting (9b2a53b)

Tests

  • Hosting an example application in DevShell and, unchanged, in another stack's shell; routing, navigation, switching organizations and conformance (0f7a80e)

v0.2.3 - 2026-10-15

Highlights

  • @plexusone/shell renders navigation in an application on SessionProvider alone

Upgrade Guide

  • Use @plexusone/shell 0.2.3; the other packages are unchanged

Fixed

  • Sidebar items no longer require a TenantProvider: items without roles always show, and items with roles are hidden when no TenantProvider can check them (8bc0142)

v0.2.2 - 2026-10-15

Highlights

  • @plexusone/ui loads: 0.2.1's exports named files its build does not write, so neither import nor require worked, and @plexusone/shell could not load

Upgrade Guide

  • Use @plexusone/ui 0.2.2; @plexusone/shell 0.2.1 accepts it through its ^0.2.1 peer range. Other packages are unchanged at 0.2.1

Fixed

  • @plexusone/ui exports point at the ESM .js and CommonJS .cjs files the build writes (eba8cad)
  • @plexusone/chat no longer exports a styles.css that nothing builds (af4c4f8)

Infrastructure

  • The build checks that every package entry point loads with import() and require(), so CI fails on a broken export (a2e8571)

v0.2.1 - 2026-10-15

Highlights

  • Every package has a README and links to its repository and documentation on npm

Fixed

  • Package pages on npm showed no README, and five packages had no repository link (a8766af)

Infrastructure

  • 0.2.1 is the first release published for every package; @plexusone/api-client 0.2.0 was the only 0.2.0 published

v0.2.0 - 2026-10-15

Highlights

  • A session over the relying-party BFF in @plexusone/auth: SessionProvider and useSession read /bff/session, with memberships keyed by organization ID, a role per application, and the deployment's app catalog
  • Shell chrome for composed applications: a product switcher from the app catalog, a controlled organization switcher, a session profile menu, named slots, and a light, dark and system theme
  • Organization management pages and a chat package with AI SDK integration
  • Packages are published under the @plexusone scope, publicly, and require React 19

Upgrade Guide

  • Import from @plexusone/* instead of @systemforge/*, and use React 19
  • Pass Profile and Settings entries to UserMenu in userActions if you relied on the defaults
  • For a SystemForge relying party, wrap the application in SessionProvider and pass app, organizationId and onOrganizationChange to AppShell

Added

  • SessionProvider, useSession, SessionClient, toSession, membershipFor and organizationLabel in @plexusone/auth; sign-in is a redirect to the BFF and sign-out a same-origin POST (f2f7adc)
  • ProductSwitcher and the switcherApps rule: the current application first, then the catalog applications the person holds a role in for the current organization (9916412)
  • OrganizationSwitcher, a controlled organization picker keyed by organization ID (9807784)
  • Named slots in Navbar and AppShell: brand, command, actions, with app, organizationId and onOrganizationChange turning on the switchers, and breadcrumbs passed through (1c2c10c)
  • ProfileMenu: who is signed in, the current organization and the role in this application, the application's profileItems, and sign out; the navbar uses it under SessionProvider (e72116b)
  • useTheme, ThemeToggle, applyStoredTheme and showThemeToggle: light, dark and system themes applied as the dark class, surviving unavailable storage (8509c3f)
  • Sun, moon and monitor icons in @plexusone/ui (ad5c59a)
  • OrganizationMembersPage, OrganizationInvitationsPage and OrganizationSettingsPage in @plexusone/pages, with the MemberRole, OrgSettingsTab, OrgMember and OrgInvitation types (48ea9c9)
  • @plexusone/chat with AI SDK integration (cc736f3)
  • @plexusone/ui, the shared component library the shell is built on (d899623)

Changed

  • BREAKING: The npm scope is @plexusone, renamed from @systemforge (1ec1707)
  • BREAKING: CoreForge is renamed SystemForge (5ca5210)
  • BREAKING: UserMenu no longer adds Profile and Settings links by default; pass them in userActions (a9c85c7)
  • BREAKING: React 19 is required (4a2a31c)
  • Internal ranges are caret ranges on the released version, and every package publishes publicly (126fcb0)

Fixed

  • Navbar, UserMenu and OrgSwitcher render without an AuthProvider or TenantProvider instead of throwing (297a105)
  • AuthProvider no longer re-fetches the user in a loop (2f31398)
  • React hooks errors in the ProductGraph telemetry hooks (50f906c)

Documentation

  • A guide to composing applications in one build or on one host each, and sections on the session, switchers, slots, profile menu and theme (64fab04)
  • The AppShell props table lists the props it has (351ac49)
  • Specs moved to docs/specs/initiatives/, with INIT-SYSTEMFORGEWEB-001 for the shell foundations (746951a)

Tests

  • Session adapter, client and provider, both switchers, slots, profile menu and theme; tests resolve workspace packages to their source (5bc92f8)

Infrastructure

  • The release workflow runs only when started by hand; packages are published with pnpm (b7c5719)

v0.1.0 - 2026-04-27

Highlights

  • Initial release of SystemForge Web component library monorepo
  • ProductGraph telemetry integration with session management and OTel compliance
  • Multi-tenant primitives with organization context and tenant isolation

Added

  • Monorepo setup with pnpm workspaces and Turborepo (5f055db)
  • ESLint and Prettier configuration for consistent code style (c1e86d4)
  • Vitest testing framework configuration (1f736e2)
  • GitHub Actions CI/CD workflows (bdee74f)
  • Changesets for versioning and changelog generation (e6dea5e)
  • @systemforge/auth package with JWT/OAuth/OIDC authentication primitives (4b1d2be)
  • @systemforge/tenant package with TenantProvider and useOrganization hooks (e1db48a)
  • @systemforge/api-client package with typed HTTP client utilities (6d36fc1)
  • @systemforge/telemetry package with TelemetryProvider, ErrorBoundary, and hooks (98e11f7)
  • @systemforge/design-tokens package with CSS custom properties (a14ba33)
  • @systemforge/shell package with AppShell layout components (570bff9)
  • @systemforge/pages package with default page components (404, 500, Loading) (4f643aa)
  • ProductGraphAdapter with session management (30-min timeout) and event batching (ddee117)
  • ProductGraph hooks: ComponentPathProvider, useStateTracker, JourneyProvider (ec194bc)
  • ProductGraph hooks: useScrollTracker, useClickTracker, useAPITracker, usePageLeaveTracker (ec194bc)
  • ProductGraph adapter and hook exports with TypeScript types (205b8e6)

Documentation

  • Project documentation with architecture overview (25a249d)
  • MkDocs documentation site with Material theme (311a4f8)
  • ProductGraph integration design documents (PRD, TRD, PLAN, TASKS) (9363c0f)

Infrastructure

  • Shared pnpm workflows from grokify/.github (bb07c1d)