Repository navigation
Releases: haruhimemoe/next-kit
Releases · haruhimemoe/next-kit
Release list
v0.16.0
Added
pwa(new subpath): install support for an app.pwaManifestforapp/manifest.ts(standalone, scoped to the origin, colored like the page, 192, 512 and maskable icons),pwaViewport(theme color, color scheme, zoom left on),pwaMetadata(appleWebAppfor the iOS home screen),serviceWorkerResponseforapp/sw.js/route.tsandServiceWorkerRegister. The service worker caches only Next's hashed build files and answers a page that can't load with an offline page in the app's colors; API, auth and HTML responses are never cached.
Changed
- The optional
@haruhimemoe/uipeer range is>=0.14.0 <0.25.0(it stopped at 0.18).
v0.15.1
Fixed
auth-react:AccountMenu's "Sign in" link is 44px tall on a touchscreen (it was 20px).i18n/next-intl:createI18nMiddleware's app step gets next-intl's response and may be async; when it answers with its own Response, next-intl's Set-Cookie is copied on so the locale rewrite cookie survives.
v0.15.0
v0.14.0
v0.13.0
v0.12.2
Fixed
check'snext-kit migrate-identitynow skips users without a numericosuId(system accounts) entirely: they're never grouped with other users, never inserted intoidentity, and never get anidMapentry, so references pointing at them are left untouched instead of being rewritten to nowhere.MigrateReportgainsusersSkipped; the CLI's summary line reports it alongsideusersSeen/usersWritten.
Changed
auth's oldSessionReadertype (the better-auth instance shape used bygetOsuUser/getSessionUser/requireSession/requireAdmin) is renamed toOsuAuthInstance, soSessionReadercan mean one thing:createSessionReader's own instance type (session-reader.ts), which the barrel used to export only asSessionReaderInstanceto dodge this exact collision.session.tskeeps aSessionReaderalias ofOsuAuthInstancefor source compatibility, andsession-reader.tskeeps aSessionReaderInstancealias ofSessionReader(the barrel exports both —bb/packs/pools/haruhime.moeall importSessionReaderInstance, none import the oldSessionReader, so this is a non-breaking patch for every real consumer).
v0.12.1
Changed
check'snext-kit migrate-identityis idempotent now that the hub is live andidentityholds real users who signed in there directly: a source group's osuId matching an existing identity user merges into it (that user's_idand fields win outright, only its own missing fields get filled from the source) instead of refusing on a non-empty identity. Accounts dedupe byproviderId+accountIdand API keys byhashagainst identity's own existing rows too, so a second--executerun inserts nothing new.MigrateReportgainsusersMerged.--drop-oldis unchanged: still its own run, still refusing whileidentityis empty.
v0.12.0
Added
- Identity core (breaking for every app — see below):
mongo'screateMongogainsidentityDbName/getIdentityDb()so the hub reads anidentitydatabase on the same client,buildIdentityIndexesbuilds its four indexes,auth'screateOsuAuthgainscookieDomain/trustedOriginsfor the hub (every better-auth cookie, including OAuth state and PKCE, on the parent domain) and a 30-day session with a 1-dayupdateAge,createSessionReaderreads a satellite's session with zero database writes (raw cookie verification, nobetterAuth()instance) and pings the hub to refresh a session pastupdateAge,getSessionUser/requireSession/requireAdminread either source and refuse a banned user,server'ssafeAbsoluteNextis the hub's exact-hostname allowlist for a satellite's absolutenext(it returns the normalized URL),hubSignInUrlbuilds a satellite's link to the hub's sign-in page through the same allowlist, andcheck'snext-kit migrate-identitymergesbb/packs/poolsusers intoidentitybyosuId(dry run by default).
Changed
- Breaking.
mongo'sonConnectnow takes one{ db, identityDb?, client }argument instead of(db, client). - Breaking. The identity user gains
locale,notificationPrefs,bannedAt,banReason,limits,discordIdanddiscordUsername(auth'sIDENTITY_USER_FIELDS, merged into everycreateOsuAuthinstance'sadditionalFields, single-DB apps included).OsuSessionUserandOsuSessiongainbannedAt. packs'systemfield does not move with this release: it stays a plain field on packs' ownusercollection for now. Once packs cuts over to the sharedidentitydatabase (after the migration script runs),systemmust move to an app-side profile collection keyed byuserId, because the identity user row is shared withbbandpoolsand has no room for one app's own flag. Do that move in the same deploy that switches packs tocreateSessionReader, not before.
v0.11.1
Fixed
HARUHIME_ORG's email is haruhime@haruhime.moe and its Discord link is https://haruhime.moe/discord.
v0.11.0
Added
legalMarkdownTransform(site)inlegal: amdxToMarkdowntransformsentry that turns each self-closing legal block tag (<LegalContact />,<DataWeKeep />,<Processors />,<YourRights />,<DmcaNotice />,<NoWarranty />,<Changes />and<Changes date="YYYY-MM-DD" />) into Markdown carrying the same words as its React block. Without it, an app that drops the legal blocks straight into itscontent/legal/*.mdxloses that text from its.mdmirrors and llms-full.txt, sincemdxToMarkdownstrips unknown capitalized JSX. The seven blocks' sentences and list items now live in a newlegal/copy.ts, shared byblocks.tsxandlegalMarkdownTransformso the two outputs can't drift apart;blocks.tsx's rendered output is unchanged.