SDK changelog
What changed in each version of the @synqauth/* packages.
Every @synqauth/* package moves to the same version together. Each version's changes, as the packages' own changelogs record them.
@synqauth/js
0.2.0
Minor Changes
-
6b4387a:
authorizationUrlandsignIntakeacr: { values, essential }: the sign-in level the app needs, such asurn:synq:loa:2for a passkey sign-in. Withoutessentialit is a request (acr_values); with it, the claims parameter insists, a sign-in below it fails withunmet_authentication_requirements, andhandleCallbackchecks the ID token'sacrtoo. -
287bcc5: Sign people in on your app's own screens.
client.startSignIn()starts a flow whose methods each take one step and resolve to what to show next:password.signInandsignUp,email.send,verifyandresend,passkey.optionsandsignIn, andverifyEmail.verify,resendandskip. Each resolves tosigned-in,code-sent,verify-email,passkey,retry(with aproblemfromCHALLENGE_PROBLEMS),refused, orhosted, whosecontinue()goes on at the hosted page.toJSON()andclient.resumeSignIn()keep a flow between app launches. A session signed in this way saysvia: 'app', andsignOut()ends it by revoking its refresh token. On a server,createOwnUiSignInfrom@synqauth/js/serverdoes the same with the app's secret or key, sends the person's address asSynq-End-User-IP, and resolves to tokens.SynqErrorgainsinvalid_session,redirect_to_webandtoo_many_requests. -
17ee1a9: Sign people in on your app's own screens.
@synqauth/nextjs: the route mount answersPOST <base>/sign-in/flow. The page posts each step as JSON; the server takes it to Synq as the app and answers only what to show next, never a token, a code or Synq's auth session. The flow stays sealed in a cookie, and a finished sign-in starts the session as the callback does.clientAddress(request)tells Synq where the person is (x-real-ipby default); without it, Synq's per-address limits are off for the app.@synqauth/react:useSignIn()runs a sign-in through that route, and<SignInForm>is it worked through: a passkey where the browser takes the issuer's on the app's page (Chrome and Edge 128+, Safari 18+, Firefox 152+), offered in the address field too, then an emailed code or a password, a sign-up screen, and the new address's code; "Forgot your password?" goes to the hosted page, where resetting lives. Anything only the hosted page can do goes there. Its parts (PasskeyButton,PasswordForm,EmailCodeForm,VerifyEmailForm,OneTimeCodeInput) lay a page out the app's own way over oneuseSignIn(). Its words are newSynqMessages(signInProblems,signInRefusals, and the labels).@synqauth/react-native:useSignIn()signs in from the device itself, with an emailed code or a password; passkeys, and anything else only the hosted page can do, go on in the system browser (continueInBrowser()).@synqauth/plugin-passkey:signIn()asks for the passkey on the app's own page where it can, and otherwise answers the hosted page's passkey step to go to.@synqauth/js:startSignInandresumeSignIntakeendUserIp, sent asSynq-End-User-IP, andstartSignIntakesadditionalResources.
-
d07554d: Users' API keys for the brand's own APIs.
@synqauth/js: the account client'sapiKeys(apis,list,create,revoke), and on@synqauth/js/server,createApiKeyVerifier, which checks a key at the brand's issuer as the API's own app and answers its claims (sub,scopes,keyId…), andisApiKey, which tells a key from an access token.@synqauth/react:useApiKeys,useKeyableApisanduseAuth().apiKeys, and an "API keys" section in<AccountManager>, which shows where one of the brand's APIs takes keys: make a key (shown once, with a copy button), list and revoke them.
Patch Changes
- 5d43ddd: The account API's and the management API's types include an identity's
handle: the person's username at X, Discord, Telegram or Matrica, without the @, or null.AccountManagershows it as@handleunder "Ways to sign in" in place of the provider's id for the person. - 2641ab8: The management API's types describe an app's warning
passkey_origin_beyond_related_origins_limit: an app that signs people in on its own screens has an origin past the first 5 sites of the brand's passkey list, so passkeys from there go through the hosted page. - 26ec5d5: The management API's types include an app's
own_ui_sign_in, which lets one of the brand's own web or native apps sign people in on its own screens. - ad1a7ef: The account API's and the management API's types say where each session was signed in,
via:hostedfor the brand's hosted page,appfor an app's own screens. - 4a4dca6: The management API's types say a token gate dry run can answer 403
plan_feature_unavailablewhen the org's plan has no token gating. - f147c6d: The account API's types include users' API keys for their brand's APIs:
GET /v1/apis, andGET,POSTandDELETE /v1/api-keys. The management API's types include an API'sallow_user_api_keys, a user's API keys, listed and revoked, the audit action and webhook event typesuser.api_key_createdanduser.api_key_revoked, and the error codesapi_keys_not_allowedandapi_key_limit_reached.
0.1.1
Patch Changes
- e2da42d: The management API's audit action and webhook event types include
brand.app_registrations_full: a brand's issuer is refusing apps that register themselves because it holds as many as it keeps.
0.1.0
Minor Changes
-
3a6c109: A brand's logo and background are uploaded straight to Synq's storage: the management types carry
POST /v1/orgs/{org}/brands/{brand}/files, its signedupload,…/files/{file}/finalizeandGET …/files/{file}, and the error codesupload_incomplete,upload_expired,file_rejectedandupload_limit_reached.PUT …/logoandPUT …/theme/background, which took the image as the body, are gone. -
5380ac4: A
SynqErrorcarriesretryAfter: the seconds Synq'sRetry-Afterasks to wait, set onrate_limited(429) answers from the management and account APIs. -
09ff36c: The management types follow the API's 1.57.0:
POST /v1/orgs/{org}/token-gates/checktests a token gate or a draft rule against wallets or a user, answering the verdict tree (TokenGateDryRun), the reads it cost and the refusal page's words. -
09ff36c: The management types follow the API's 1.58.0: a token gate's collection condition carries
collection_kind(core,token_metadataortoken_group), and may name a Token-2022 group. -
09ff36c: The management types follow the API's 1.56.0: a token gate holds a
rule(allandanygroups oftoken,collection,nftandallowlistconditions, each on its chain) in place ofmint,min_amount,chainandcluster, with an optionalschedule, arefusal_messageand a one-linesummary; the gate list carries thechainsthe API reads. -
09ff36c: The management types follow the API's 1.59.0: a token gate's
rulein an answer isTokenGateShownRule, whosechain,walletsandcollection_kindare strings whose values may grow (x-extensible-enum), and a dry run of a draft answers 503 when its tokens and NFTs can't be read. -
74bc862: Add the account client:
createAccountClientcalls the brand's account API for the signed-in person (me(),user.update(),wallets,accountswithlink(),sessions,passkeys,consents,activity()anddeletion), answering every call as{ data, error }without throwing, with anIdempotency-Keyon every change.accountApiUrl(issuer)is the resource its tokens are for, andlinkSignIn(request)turns a link request into the sign-in that finishes it. -
24f17fc:
authorizationUrl({ additionalResources }): one sign-in can cover several of the brand's APIs; the code is exchanged for the client's ownresource, and a refresh with anotherresourcegets that API's token.signOut()tries revoking the refresh token twice and logs a failure: an offline grant outlives the brand's session, so an unrevoked refresh token stays usable until it expires. -
dd1b1b0: Breaking, in the management API's types:
OrgProviderApp.redirect_uriand the org-levelPUT …/sign-in-providers/{provider}/appanswer'sredirect_uriare replaced byredirect_uris, one per live brand of the org, since an app a tenant brings now comes back to each brand's own issuer host (management API 1.38.0, a one-time breaking change on/v1). The org-level PUT's answer (OrgWideProviderApp) is never null. A brand's own app (ProviderApp) and each of its sign-in providers name the brand's ownredirect_uri, and the answer that makes a brand (BrandCreated) carrieswarnings, which name the callback each of the org's own apps must add. -
7fcb1b5: The management API's types gain a brand's email settings,
GETandPATCH /v1/orgs/{org}/brands/{brand}/emailwith its reply-to address and what the next email carries, sending the reply-to confirmation again, and the audit log's and webhooks'brand.reply_to_confirmed(management contract 1.51.0). -
a967f46: The management API's types gain a brand's sender,
senderonGETandPATCH /v1/orgs/{org}/brands/{brand}/email(one of the org's sending domains, the part before the @ and the name),POST …/email/test, a sending domain'sused_by, and theemail_domain_in_useproblem (management contract 1.53.0). -
7e67619: The management API's types include change requests: an app's redirect URIs, asked for from an MCP host and approved in the dashboard.
-
57e05dd: The management API's types name the plan feature
branding.custom_domain, a brand's sign-in on a domain its tenant owns (coming), and the audit log's and webhooks'brand.custom_domain_added,_verified,_activated,_failed,_suspended,_restoredand_removed(management contract 1.64.0). -
0aa9caf: The management API's types gain a brand's custom domain,
GET,POSTandDELETE /v1/orgs/{org}/brands/{brand}/custom-domainandPOST …/custom-domain/verify, on plans withbranding.custom_domain, a brand'scustom_domain_issuer, and the problemscustom_domain_exists,hostname_taken,invalid_hostname,apex_not_supported,reserved_hostname,hostname_deniedandhostname_not_allowed_here(management contract 1.65.0). -
d13ab04: The management client's types describe redirect URIs as the API now takes them: a web app or SPA may also register https on
localhost,127.0.0.1or[::1], matched exactly with its port, for a dev server on a laptop. An app gainswarnings, such asloopback_redirect_uriswhen a deployed app still has such URIs (management contract 1.32.0). -
a8ad19c: The management API's types gain an org's
disabled_atanddisabled_reason, and the audit log's and webhooks'org.disabledandorg.enabled(management contract 1.37.0). -
3976630: The management API's types gain a web app's
refresh_token_reuse_window_seconds, and the audit log's and webhooks'app.refresh_token_replayed(management contract 1.33.0). -
e9f5bb4: The management API's types gain the audit log's and webhooks'
email_domain.verifiedandemail_domain.failed, as Synq verifies and watches sending domains (management contract 1.54.0). -
5a1ad56: The management API's types gain an org's sending domains,
/v1/orgs/{org}/email-domains, on plans withbranding.custom_email_domain, with theorg.emailDomains.viewand.editpermissions, theemail_domain_*problems and the audit log'semail_domain.createdandemail_domain.deleted(management contract 1.52.0). A plan's features, a theme preview'sneedsand the caller's permissions are now open lists (x-extensible-enum), typed as strings, since each grows; a problem may carryreason. -
0173fa0:
@synqauth/js/server:createAccessTokenVerifierchecks the access tokens Synq issues for your API (issuer, audience,at+jwt, ES256, and, per route, scopes, the app that asked and how recent the sign-in is), with the issuer's keys fetched once and again when a new one signs;verifyWebhookchecks Synq's Standard Webhooks signatures, with both secrets during a rotation; andcreateManagementClientcalls the management API with an org API key, typed by its contract. -
eb09a53:
createSynqClient: sign people in with the authorization code flow (PKCE S256, state, nonce and theisscheck), keep the session in memory or any store you give it (refresh tokens never in the browser's storage; a store shared by several clients gives them a lock), keep each sign-in's transaction where every tab sees it, so a magic link opened in a new tab finishes it, refresh with one request however many callers ask at once, recover a reloaded page withrestoreSession(), hear every change withsubscribe(), and sign out with RP-initiated logout. Every error is aSynqErrorwith a stablecode. -
be077e0: The management API's brands carry
show_last_used, whether the sign-in page marks the way a browser last signed in at the brand ("Last used"). -
ea9a6ae: The management API's sign-in providers include
apple. A tenant's own Apple app is its Services ID asclient_id, withteam_id,key_idand the.p8private_keyin place ofclient_secret: Synq signs each client secret it sends Apple, and never returns the key. A provider's name in an answer is now typed as a string, since the list grows: handle one you don't know. -
3e4f730: The management and account API types name
matricaamong the sign-in providers and identities. -
bbc521a: The management and account API types name
telegramamong the sign-in providers and identities. -
50fc801: The management API's sign-in providers include
facebookandx, each with a client id and secret like Google's. -
c1ea974:
@synqauth/solana: sign in with a Solana wallet from the brand's own app's page, on the Wallet Standard alone.getSolanaWalletsandwatchSolanaWallets(anduseSolanaWalletsfrom@synqauth/solana/react) find the browser's wallets;signInWithWalletasks the issuer for the Sign In With Solana request, has the wallet sign it (solana:signIn, elsesolana:signMessage), and sends the signature in a pushed authorization request, so the browser passes through the issuer with no page. A declined signature is the errorwallet_rejected.@synqauth/js:authorizationUrl({ pushed: true })sends the request's parameters to the issuer as a pushed authorization request (RFC 9126), and answers a URL carrying only its reference. -
ff21113: The management client's types describe token gates (management contract 1.34.0): an org's gates on its brands and apps,
GET,POST,PATCHandDELETEunder/v1/orgs/{org}/token-gates, each a mint, a minimum in whole tokens and whether it is on, with the cluster its mint is read on. Gates are checked at every sign-in and on every refresh. The error codes gaintoken_gates_unavailable, and the audit log's and webhooks' actions gaintoken_gate.created,token_gate.updated,token_gate.deletedanduser.token_gate_checked. -
ecb013c: Types for the management API and the account API, generated from their OpenAPI documents, and
SynqErrorCode, every error code a Synq API answers with. -
65545d9: The management API's types gain the audit log's and webhooks'
user.looked_up, when Synq's staff looked a brand's users up, with their reason (management contract 1.38.0).
Patch Changes
- 091cd48: The management types carry an app's
initiate_login_uri, where the brand's signed-out page sends someone to sign in again. - e7f3276: The management API's types describe
link_by_emailas it now works: Google vouches for Gmail and for a Workspace account's address on its own domain, Apple for its own mailboxes, and Microsoft only with itsxms_edovclaim. - 6fd1503: The management types follow the API's 1.66.1: a person's access token for the management API comes from Synq's own issuer, the
synqbrand, where the docs used to say aconsolebrand. - dd9d81a: The management types carry a brand theme's
glow_colorand thesource-sansfont, which Synq serves from the brand's own issuer host. - 09ff36c: The management types follow the API's 1.58.1: writing a token gate reads what its rule names from the org's own reads (
token_gate.org_reads), and answers 429 once they're spent. - cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - 5f4239e: The account API's types know each session's
current, true for the session the calling token came from. Its POST and PATCH routes honour anIdempotency-Key. - d80dde9: The management client's types cover billing through Stripe: starting checkout, changing a paying org's plan, opening the billing portal, and listing invoices, with their new error codes.
- 390783d: The management API's types now include a brand's hosted-page theme: reading and changing it, previewing it, and its background image.
- 48d763c: The management API's types now include
GET /v1/orgs/{org}/permissions, what the caller may do in an org. - e19e50e: The management API's types describe custom domains as they now hold their hostnames: only once their DNS proves them, with the problem code
hostname_takenwhen another brand proved the name first (management contract 1.66.0). - c84a377: The management API's types describe a brand deleted in the last 30 days as still counting against the org's plan, in making a brand and in the billing usage.
- 2e4b64b: The account API's types now include
POST /v1/link-requests, which starts adding a way to sign in: it was served but missing from the account contract. The passkey and link request routes also document their 503 where an issuer hasn't set them up, and the answer'smethodis an extensible list. - 14d1ef9: The management API's types describe a native app's redirect URIs as taking a scheme of its own, a reverse domain name such as
com.example.app:/callback(RFC 8252), as well as a claimed https link or http on a loopback address. - 10474b5: The management API's types now let a brand's
primary_colorandbackground_color, and its theme'ssurface_color, be set tonullto unset them, as the API always allowed. - 676693b: The management API's types know the plan catalog (
GET /v1/plans), each org'splan, and theplan_quota_exceededandplan_feature_unavailableproblems, which name the plan that allows what was refused. - f998a64:
@synqauth/react-native:createSynqNativesigns people in through the system browser (expo-web-browser, never an embedded web view) with PKCE and a callback on an https link the app claims, and keeps the session, refresh token included, in the device's secure storage (expo-secure-store, split across items when large).SynqNativeProviderwithuseSession,useUseranduseAuthfollows the device's session;useUser().accountis the brand's account API when the session's token is for it.@synqauth/jsgains the error codecancelled, for a sign-in the person closed. - 23aaf06: The management API's types say that a brand's reply-to on a sending domain the org verified is confirmed at once, and that it is a plain ASCII address (management contract 1.54.1).
- 9cb7e83: Every public export now has a doc comment, which the docs' SDK reference is generated from.
- 6d38d7e: The management API's types know
GET /v1/orgs/{org}/billing/usage: an org's monthly active users against its plan's allowance, and its apps and brands against the plan's limits. - 0ce11bf: The management API types document that a webhook subscription receives only events recorded after it exists and while it is on (management API 1.31.0).
@synqauth/nextjs
0.2.0
Minor Changes
-
17ee1a9: Sign people in on your app's own screens.
@synqauth/nextjs: the route mount answersPOST <base>/sign-in/flow. The page posts each step as JSON; the server takes it to Synq as the app and answers only what to show next, never a token, a code or Synq's auth session. The flow stays sealed in a cookie, and a finished sign-in starts the session as the callback does.clientAddress(request)tells Synq where the person is (x-real-ipby default); without it, Synq's per-address limits are off for the app.@synqauth/react:useSignIn()runs a sign-in through that route, and<SignInForm>is it worked through: a passkey where the browser takes the issuer's on the app's page (Chrome and Edge 128+, Safari 18+, Firefox 152+), offered in the address field too, then an emailed code or a password, a sign-up screen, and the new address's code; "Forgot your password?" goes to the hosted page, where resetting lives. Anything only the hosted page can do goes there. Its parts (PasskeyButton,PasswordForm,EmailCodeForm,VerifyEmailForm,OneTimeCodeInput) lay a page out the app's own way over oneuseSignIn(). Its words are newSynqMessages(signInProblems,signInRefusals, and the labels).@synqauth/react-native:useSignIn()signs in from the device itself, with an emailed code or a password; passkeys, and anything else only the hosted page can do, go on in the system browser (continueInBrowser()).@synqauth/plugin-passkey:signIn()asks for the passkey on the app's own page where it can, and otherwise answers the hosted page's passkey step to go to.@synqauth/js:startSignInandresumeSignIntakeendUserIp, sent asSynq-End-User-IP, andstartSignIntakesadditionalResources.
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
0.1.0
Minor Changes
-
1981489: The proxy no longer sends a page that came back with
synq_errorto sign in again, which could loop on a refusal or a failing callback: it shows why, with "Try again" and "Use another account", on a plain page of its own or the app'ssignInErrorpage, andsynqAuth().signInError()reads it for that page. -
9c84cb7: Adding a way to sign in from an app.
@synqauth/nextjs's route mount takesPOST <base>/linkwith{ method, returnTo }from the app's own pages: it asks the brand's account API for a link request with the session's token, and answers{ redirect }, a sign-in that carries the request's ticket, so Synq asks the person to sign in again and then adds the method. The account API's refusals (sign_in_method_unavailable,identity_limit_reached) come back as they are.GET <base>/sign-in?intent=link, which had no ticket to carry, is gone.@synqauth/react'suseAuth().link(method, { returnTo })calls it and follows the redirect.@synqauth/nextjsno longer signs someone out when they sign in again within their session at Synq, as adding a passkey or a way to sign in asks: Synq gives that sign-in the grant they already had, and revoking the replaced session's refresh token ended it, the new session's tokens with it. The replaced session's refresh token is still revoked when the two ID tokens name different people, or different sessions at Synq by theirsid(which Synq sends to apps with a back-channel logout URI). -
24f17fc:
synqAuth()andsynqProxy(), sharing onedefineSynqConfig(): Synq for a Next.js app as a backend-for-frontend, so the browser never holds a Synq token. One route mount (app/api/auth/[...synq]/route.ts) signs people in and out (RP-initiated logout), tells the browser who is signed in, and calls the brand's account API for it; the tokens stay on the app's server in a sealed__Host-HttpOnly cookie, or a store you give it (keyValueSessionStorefor Redis or Valkey, which several server processes share), and each session refreshes one request at a time.synq.me()reads the signed-in person once per request,getAccessToken()gives the app's server a token for its API,@synqauth/nextjs/proxyrefreshes a session before a page renders and sends anyone without one to sign in from Next 16'sproxy.ts, on any runtime, anddefineSynqPlugin/defineSynqClientPluginlet other packages add routes under the mount. -
2586fb9:
@synqauth/plugin-siws: Sign In With Solana from the app's own UI.siwsPlugin()(the browser half) asks the issuer for the request, has the wallet sign it, and hands the signature to the route mount, which pushes it to Synq; the browser passes through the issuer with no page.siwsServerPlugin()from@synqauth/plugin-siws/servertells the page which issuer and app to ask.@synqauth/nextjs's route mount takesPOST <base>/sign-inwith{ siws, returnTo }for it, from the app's own pages.
Patch Changes
- d55bf3f: The proxy now sends people to sign in on your app's own origin (
SYNQ_APP_URL), not on the address your server saw. A self-hosted Next.js server, behind a load balancer or an ingress, sees its own listener inrequest.url(http://0.0.0.0:3000). The proxy used to redirect browsers there. - 3009f33: The sign-in route answers a prefetch (Next.js's
next/link, or a browser's speculative load) with 204 and starts no sign-in: no transaction cookie is set, so prefetches never push out the sign-in a click starts. Anext/linkto/api/auth/sign-inis safe; a plain<a>still saves the wasted request. - 2e4b64b: The route mount reads a link request's answer by the account contract's own
LinkRequesttype. - cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - 722b80e: A sign-in that replaces a session now tells a new grant from the old one by the ID tokens'
sidfor every app, since Synq includes it in every app's ID tokens: when they differ, the replaced session's refresh token is revoked rather than left to expire. - 9cb7e83: Every public export now has a doc comment, which the docs' SDK reference is generated from.
- Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
@synqauth/react
0.2.0
Minor Changes
-
17ee1a9: Sign people in on your app's own screens.
@synqauth/nextjs: the route mount answersPOST <base>/sign-in/flow. The page posts each step as JSON; the server takes it to Synq as the app and answers only what to show next, never a token, a code or Synq's auth session. The flow stays sealed in a cookie, and a finished sign-in starts the session as the callback does.clientAddress(request)tells Synq where the person is (x-real-ipby default); without it, Synq's per-address limits are off for the app.@synqauth/react:useSignIn()runs a sign-in through that route, and<SignInForm>is it worked through: a passkey where the browser takes the issuer's on the app's page (Chrome and Edge 128+, Safari 18+, Firefox 152+), offered in the address field too, then an emailed code or a password, a sign-up screen, and the new address's code; "Forgot your password?" goes to the hosted page, where resetting lives. Anything only the hosted page can do goes there. Its parts (PasskeyButton,PasswordForm,EmailCodeForm,VerifyEmailForm,OneTimeCodeInput) lay a page out the app's own way over oneuseSignIn(). Its words are newSynqMessages(signInProblems,signInRefusals, and the labels).@synqauth/react-native:useSignIn()signs in from the device itself, with an emailed code or a password; passkeys, and anything else only the hosted page can do, go on in the system browser (continueInBrowser()).@synqauth/plugin-passkey:signIn()asks for the passkey on the app's own page where it can, and otherwise answers the hosted page's passkey step to go to.@synqauth/js:startSignInandresumeSignIntakeendUserIp, sent asSynq-End-User-IP, andstartSignIntakesadditionalResources.
-
d07554d: Users' API keys for the brand's own APIs.
@synqauth/js: the account client'sapiKeys(apis,list,create,revoke), and on@synqauth/js/server,createApiKeyVerifier, which checks a key at the brand's issuer as the API's own app and answers its claims (sub,scopes,keyId…), andisApiKey, which tells a key from an access token.@synqauth/react:useApiKeys,useKeyableApisanduseAuth().apiKeys, and an "API keys" section in<AccountManager>, which shows where one of the brand's APIs takes keys: make a key (shown once, with a copy button), list and revoke them.
Patch Changes
- 5d43ddd: The account API's and the management API's types include an identity's
handle: the person's username at X, Discord, Telegram or Matrica, without the @, or null.AccountManagershows it as@handleunder "Ways to sign in" in place of the provider's id for the person. - Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
0.1.0
Minor Changes
-
9c84cb7: Adding a way to sign in from an app.
@synqauth/nextjs's route mount takesPOST <base>/linkwith{ method, returnTo }from the app's own pages: it asks the brand's account API for a link request with the session's token, and answers{ redirect }, a sign-in that carries the request's ticket, so Synq asks the person to sign in again and then adds the method. The account API's refusals (sign_in_method_unavailable,identity_limit_reached) come back as they are.GET <base>/sign-in?intent=link, which had no ticket to carry, is gone.@synqauth/react'suseAuth().link(method, { returnTo })calls it and follows the redirect.@synqauth/nextjsno longer signs someone out when they sign in again within their session at Synq, as adding a passkey or a way to sign in asks: Synq gives that sign-in the grant they already had, and revoking the replaced session's refresh token ended it, the new session's tokens with it. The replaced session's refresh token is still revoked when the two ID tokens name different people, or different sessions at Synq by theirsid(which Synq sends to apps with a back-channel logout URI). -
c954204:
@synqauth/react:SynqProviderseeded from the server (initialSession),useSession(),useUser()(claims at once, then the profile andUserMetadata, which an app augments to type), anduseAuth()withwallets,accountsandsessionsover the brand's account API through the app's route mount, so the browser never holds a token. Every call answers{ data, error }; each change carries an idempotency key its component mints, and a change asked again while under way (a double click) sends once.SignInMethodis a typed union a brand's own connections extend.<SignInButton>,<UserButton>,<SignedIn>,<SignedOut>,<AccountManager>and<WalletManager>render styled by CSS variables (@synqauth/react/styles.css) orunstyled, in the app's words through<SynqProvider messages>.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - 5f4239e:
<AccountManager>marks the session the page is signed in with as "This device" (messages.thisDevice), from the account API'scurrent. - 9cb7e83: Every public export now has a doc comment, which the docs' SDK reference is generated from.
- Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
@synqauth/react-native
0.2.0
Minor Changes
-
17ee1a9: Sign people in on your app's own screens.
@synqauth/nextjs: the route mount answersPOST <base>/sign-in/flow. The page posts each step as JSON; the server takes it to Synq as the app and answers only what to show next, never a token, a code or Synq's auth session. The flow stays sealed in a cookie, and a finished sign-in starts the session as the callback does.clientAddress(request)tells Synq where the person is (x-real-ipby default); without it, Synq's per-address limits are off for the app.@synqauth/react:useSignIn()runs a sign-in through that route, and<SignInForm>is it worked through: a passkey where the browser takes the issuer's on the app's page (Chrome and Edge 128+, Safari 18+, Firefox 152+), offered in the address field too, then an emailed code or a password, a sign-up screen, and the new address's code; "Forgot your password?" goes to the hosted page, where resetting lives. Anything only the hosted page can do goes there. Its parts (PasskeyButton,PasswordForm,EmailCodeForm,VerifyEmailForm,OneTimeCodeInput) lay a page out the app's own way over oneuseSignIn(). Its words are newSynqMessages(signInProblems,signInRefusals, and the labels).@synqauth/react-native:useSignIn()signs in from the device itself, with an emailed code or a password; passkeys, and anything else only the hosted page can do, go on in the system browser (continueInBrowser()).@synqauth/plugin-passkey:signIn()asks for the passkey on the app's own page where it can, and otherwise answers the hosted page's passkey step to go to.@synqauth/js:startSignInandresumeSignIntakeendUserIp, sent asSynq-End-User-IP, andstartSignIntakesadditionalResources.
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
0.1.0
Minor Changes
- f998a64:
@synqauth/react-native:createSynqNativesigns people in through the system browser (expo-web-browser, never an embedded web view) with PKCE and a callback on an https link the app claims, and keeps the session, refresh token included, in the device's secure storage (expo-secure-store, split across items when large).SynqNativeProviderwithuseSession,useUseranduseAuthfollows the device's session;useUser().accountis the brand's account API when the session's token is for it.@synqauth/jsgains the error codecancelled, for a sign-in the person closed.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
@synqauth/solana
0.2.0
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
0.1.0
Minor Changes
- c1ea974:
@synqauth/solana: sign in with a Solana wallet from the brand's own app's page, on the Wallet Standard alone.getSolanaWalletsandwatchSolanaWallets(anduseSolanaWalletsfrom@synqauth/solana/react) find the browser's wallets;signInWithWalletasks the issuer for the Sign In With Solana request, has the wallet sign it (solana:signIn, elsesolana:signMessage), and sends the signature in a pushed authorization request, so the browser passes through the issuer with no page. A declined signature is the errorwallet_rejected.@synqauth/js:authorizationUrl({ pushed: true })sends the request's parameters to the issuer as a pushed authorization request (RFC 9126), and answers a URL carrying only its reference.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
@synqauth/solana-mobile
0.2.0
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
- @synqauth/solana@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
- @synqauth/solana@0.1.1
0.1.0
Minor Changes
- 202a415:
@synqauth/solana-mobile: Solana Mobile sign-in.mobileWalletSignInUrl(from/react-native) signs the issuer's request in the wallet app through Mobile Wallet Adapter'stransactand pushes it to Synq;registerMobileWallet(from/web) registers Mobile Wallet Adapter as a Wallet Standard wallet in a mobile browser, for@synqauth/solana;siwsFromMwa(from/core) turns MWA's sign-in result into what Synq takes, checking the message the wallet signed is the issuer's.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - 07a12c3:
mobileWalletSignInUrlneeds the app's https identity asappOrigin, the origin of a redirect URI it claims (an App Link or universal link), and refuses anything else withinvalid_optionsbefore asking the issuer or the wallet. An app whose only redirect URI is a scheme of its own signs people in through the browser only. - Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
- @synqauth/solana@0.1.0
@synqauth/plugin-siws
0.2.0
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
- @synqauth/solana@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
- @synqauth/solana@0.1.1
0.1.0
Minor Changes
- 2586fb9:
@synqauth/plugin-siws: Sign In With Solana from the app's own UI.siwsPlugin()(the browser half) asks the issuer for the request, has the wallet sign it, and hands the signature to the route mount, which pushes it to Synq; the browser passes through the issuer with no page.siwsServerPlugin()from@synqauth/plugin-siws/servertells the page which issuer and app to ask.@synqauth/nextjs's route mount takesPOST <base>/sign-inwith{ siws, returnTo }for it, from the app's own pages.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
- @synqauth/solana@0.1.0
@synqauth/plugin-passkey
0.2.0
Minor Changes
-
17ee1a9: Sign people in on your app's own screens.
@synqauth/nextjs: the route mount answersPOST <base>/sign-in/flow. The page posts each step as JSON; the server takes it to Synq as the app and answers only what to show next, never a token, a code or Synq's auth session. The flow stays sealed in a cookie, and a finished sign-in starts the session as the callback does.clientAddress(request)tells Synq where the person is (x-real-ipby default); without it, Synq's per-address limits are off for the app.@synqauth/react:useSignIn()runs a sign-in through that route, and<SignInForm>is it worked through: a passkey where the browser takes the issuer's on the app's page (Chrome and Edge 128+, Safari 18+, Firefox 152+), offered in the address field too, then an emailed code or a password, a sign-up screen, and the new address's code; "Forgot your password?" goes to the hosted page, where resetting lives. Anything only the hosted page can do goes there. Its parts (PasskeyButton,PasswordForm,EmailCodeForm,VerifyEmailForm,OneTimeCodeInput) lay a page out the app's own way over oneuseSignIn(). Its words are newSynqMessages(signInProblems,signInRefusals, and the labels).@synqauth/react-native:useSignIn()signs in from the device itself, with an emailed code or a password; passkeys, and anything else only the hosted page can do, go on in the system browser (continueInBrowser()).@synqauth/plugin-passkey:signIn()asks for the passkey on the app's own page where it can, and otherwise answers the hosted page's passkey step to go to.@synqauth/js:startSignInandresumeSignIntakeendUserIp, sent asSynq-End-User-IP, andstartSignIntakesadditionalResources.
Patch Changes
- Updated dependencies [5d43ddd]
- Updated dependencies [6b4387a]
- Updated dependencies [2641ab8]
- Updated dependencies [287bcc5]
- Updated dependencies [26ec5d5]
- Updated dependencies [ad1a7ef]
- Updated dependencies [4a4dca6]
- Updated dependencies [f147c6d]
- Updated dependencies [17ee1a9]
- Updated dependencies [d07554d]
- @synqauth/js@0.2.0
0.1.1
Patch Changes
- Updated dependencies [e2da42d]
- @synqauth/js@0.1.1
0.1.0
Minor Changes
- a5dff33:
@synqauth/plugin-passkeyand@synqauth/plugin-magic-link: browser plugins for@synqauth/reactand@synqauth/nextjs/client.passkeyPlugin()sends the person to the brand's passkey step to sign in (signInUrl) or to add a passkey after a fresh sign-in (addUrl), and lists and removes their passkeys through the route mount (list,remove).magicLinkPlugin()sends them to the brand's email step with their address filled in (signInUrl). The issuer runs and verifies every step; nothing is verified on your server.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name. - Updated dependencies [3a6c109]
- Updated dependencies [091cd48]
- Updated dependencies [e7f3276]
- Updated dependencies [5380ac4]
- Updated dependencies [6fd1503]
- Updated dependencies [dd9d81a]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [09ff36c]
- Updated dependencies [cbc84b3]
- Updated dependencies [74bc862]
- Updated dependencies [5f4239e]
- Updated dependencies [24f17fc]
- Updated dependencies [d80dde9]
- Updated dependencies [dd1b1b0]
- Updated dependencies [7fcb1b5]
- Updated dependencies [a967f46]
- Updated dependencies [390783d]
- Updated dependencies [48d763c]
- Updated dependencies [7e67619]
- Updated dependencies [57e05dd]
- Updated dependencies [e19e50e]
- Updated dependencies [0aa9caf]
- Updated dependencies [c84a377]
- Updated dependencies [d13ab04]
- Updated dependencies [2e4b64b]
- Updated dependencies [14d1ef9]
- Updated dependencies [10474b5]
- Updated dependencies [a8ad19c]
- Updated dependencies [676693b]
- Updated dependencies [f998a64]
- Updated dependencies [3976630]
- Updated dependencies [23aaf06]
- Updated dependencies [e9f5bb4]
- Updated dependencies [5a1ad56]
- Updated dependencies [0173fa0]
- Updated dependencies [eb09a53]
- Updated dependencies [be077e0]
- Updated dependencies [ea9a6ae]
- Updated dependencies [3e4f730]
- Updated dependencies [bbc521a]
- Updated dependencies [50fc801]
- Updated dependencies [c1ea974]
- Updated dependencies [ff21113]
- Updated dependencies [9cb7e83]
- Updated dependencies [ecb013c]
- Updated dependencies [6d38d7e]
- Updated dependencies [65545d9]
- Updated dependencies [0ce11bf]
- @synqauth/js@0.1.0
@synqauth/plugin-magic-link
0.2.0
Patch Changes
- 1b79b36: Says what it does: it sends people from your own UI to the hosted page's emailed code or magic link. To take the code on your own page, use own-UI sign-in (
useSignIn().emailCodein@synqauth/react).
0.1.1
No changes in this release.
0.1.0
Minor Changes
- a5dff33:
@synqauth/plugin-passkeyand@synqauth/plugin-magic-link: browser plugins for@synqauth/reactand@synqauth/nextjs/client.passkeyPlugin()sends the person to the brand's passkey step to sign in (signInUrl) or to add a passkey after a fresh sign-in (addUrl), and lists and removes their passkeys through the route mount (list,remove).magicLinkPlugin()sends them to the brand's email step with their address filled in (signInUrl). The issuer runs and verifies every step; nothing is verified on your server.
Patch Changes
- cbc84b3: The package's
repositorylink points atgithub.com/aerosol-build/synq, the GitHub organization's new name.