chore: version packages - #47
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
August 21, 2026 13:50
0a180af to
f287460
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 21, 2026 14:35
f287460 to
79190c3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
seamless-templates@0.10.0
Minor Changes
43239a8: feat(templates): name auth cookies per application
Both API starters (
expressandfastify) now readAUTH_COOKIE_PREFIXandderive
accessCookieName,refreshCookieName,registrationCookieNameandpreAuthCookieNamefrom it, passing all four to the auth server and the matchingcookieNametorequireAuth.Cookies are scoped by host and ignore the port, so two Seamless applications
served from the same host share one cookie jar and overwrite each other's
session. Signing into one signs you out of the other. That is invisible in
production, where each application has its own domain, and unavoidable in
development, where they are all on localhost.
The guard has to be told the name as well as the server. Left on its default it
looks for
seamless-accesswhile the server has issued something else, and everyrequest 401s while holding a valid session.
The default prefix is
seamless-, which reproduces the names@seamless-auth/expressalready uses, so an existing project upgrades withoutlogging anyone out.
.env.exampleand the README table in both starters documentthe variable.
Note for anyone scaffolding several applications on one host: the variable is
read but not yet set by
template.json, so a project created by the CLI stillgets the default names and still shares a cookie jar with its neighbours. Set
AUTH_COOKIE_PREFIXin the generated.envto separate them.1dca3d9: feat(templates): give each style its own voice, and replace generated artwork
The shared React kit gains a font token per role (
--app-font-display,--app-font-body,--app-font-label), aVistabackdrop component, andfull-viewport views with scroll-driven transitions. Nothing is downloaded: the
tokens name system stacks only, so the lever is which of the faces an OS already
ships each style reaches for.
Vistais a fixed stack of four layers behind the page: two concentrated lightsources, concentric rings, a slow conic sweep, and a ruled grid. Every layer is a
gradient built from the application's own two colours, so one component still
comes out looking like that application, and a style that wants no backdrop sets
each layer to
none. It also carries the page background, which is why the shellmounts it once and content above it needs
above-vista.Each region a
Screenrenders is now a view. A style decides whether that means ablock of an ordinary scrolling page or a full height of the window that the page
settles on, so the same markup is a working tool or an experience without being
written twice. The reveal animation is ranged over
coverrather thanentry,because a view as tall as the window never finishes entering and an entry range
strands it part-way through with its content invisible. Both scroll-driven
behaviours sit behind
@supportsandprefers-reduced-motion, and degrade tovisible.
This replaced the per-application SVG motif. A drawing had to be invented on every
run, came out differently each time, and was reliably the least convincing thing
on the screen.
Screen,AuthFrameandEmptyStateno longer accept amotifprop, and the prop is gone from
types.ts.Also in this change: the
boardarchetype now renders a banded header, like everyarchetype except
feed.Breaking for anyone consuming the kit directly: passing
motiftoScreen,AuthFrameorEmptyStateis now a type error, and the--app-motif-*tokens nolonger exist. Generators that write a
Motifcomponent alongside a screen needupdating in step, since the backdrop now belongs to the theme rather than to the
subject.
a723535: feat(templates): give both React starters a design token layer, an app shell, and a shared UI kit
Both React starters (
react-viteandreact-oauth) now take every colour, radius,shadow, duration and type size from custom properties declared in
src/index.css.No component carries a literal colour, so the whole application rethemes from one
block, and the tokens respond to the OS colour scheme without any
dark:variantsin markup.
On top of that:
layouts/Layout.tsxandcomponents/Navbar.tsxare a persistent sidebar shellwith full-width content, replacing the centered navbar over a centered column.
The sidebar reads its own
shelltoken family, so a theme can put a deepsidebar against light content.
src/components/kitis a set of composable, token-styled pieces:Screen(which arranges a page by named archetype),
AuthFrame,StatRow,InlineCreateForm,RecordList,RecordCard,DataTable,RankedTable,ActionCard,EmptyState,Field,Toggle,PrimaryButton, and auseCollectionhook that loads a collection and creates optimistically.kit/Example.tsxis a worked screen built from them.throughout. The OAuth starter keeps its provider-driven sign-in, its callback
route and its own nav entries.
The tokens, the shell layout and the kit are identical in both starters and are
kept that way mechanically: they are edited in
shared/react-appand copied intoeach template by
npm run sync:shared, andnpm run validatefails when a copyhas drifted. This repository is not published to npm and the CLI copies exactly one
template directory into a new project, so each template has to carry its own copy
rather than importing a package.
Existing projects are unaffected until they scaffold again.
Patch Changes
7b278e5: fix(templates): declare Sequelize model attributes instead of using public class fields
The
Usermodel in both API starters (expressandfastify) declared itsattributes as
public id!: string. Sequelize installs its attribute getters andsetters on the prototype, and a public class field is emitted as an own property
initialised to undefined, which shadows them:
user.idreads undefined whileuser.get("id")returns the row's value. Sequelize warns about this at modelinit.
declareemits no field at all, so the accessors survive.Whether the field is emitted depends on
useDefineForClassFields, which followstarget. Both starters compile attarget: ES2020, where the field is erasedand the shadowing does not occur, so this is a guard rather than a repair of
behaviour anyone is seeing today. It matters because the guard is what keeps a
later
targetbump from silently breaking every model: at ES2022 the same codereturns undefined for every attribute, and the first symptom is a query built
with an undefined parameter on a handler that filters by
req.appUser.id.