diff --git a/.changeset/seamless-sdks-passkey-skip.md b/.changeset/seamless-sdks-passkey-skip.md new file mode 100644 index 0000000..7659c8b --- /dev/null +++ b/.changeset/seamless-sdks-passkey-skip.md @@ -0,0 +1,19 @@ +--- +'seamless-templates': minor +--- + +Move the templates onto the Seamless SDK releases that let a user finish registration without a +passkey. + +Registration used to end on a screen with one control on it. A user who did not want a passkey, or +whose device could not make one, had no way forward. `@seamless-auth/react` 0.8.0 offers a skip when +the instance has a login method other than `passkey` enabled, and says plainly when it does not. + +The web and API templates have to move together for that to work. The skip is gated on reading +`GET /system-config/public` from the auth server, and the adapters serve routes from an explicit +list, so the React templates on 0.8.0 need an API template that proxies the new route. A web +template upgraded on its own would read nothing, and fall back to showing no skip at all. + +- `@seamless-auth/react` 0.7.0 to 0.8.0 in both React templates +- `@seamless-auth/express` 0.11.0 to 0.12.0 +- `@seamless-auth/fastify` 0.2.0 to 0.3.0 diff --git a/templates/api/express/package-lock.json b/templates/api/express/package-lock.json index ea809ed..6964b82 100644 --- a/templates/api/express/package-lock.json +++ b/templates/api/express/package-lock.json @@ -9,7 +9,7 @@ "version": "0.2.0", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/express": "^0.11.0", + "@seamless-auth/express": "^0.12.0", "cookie-parser": "^1.4.7", "cors": "^2.8.5", "dotenv": "^16.6.1", @@ -789,9 +789,9 @@ } }, "node_modules/@seamless-auth/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/core/-/core-0.11.0.tgz", - "integrity": "sha512-qChaPnT/0KT3tq3CYTHxbcOdQJxpcEtJCAhXgzMQFQj1rEngJpzTYcP3lwi2m7VrYS68So6VstJRCwtPcYfojg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/core/-/core-0.12.0.tgz", + "integrity": "sha512-lK2iZLOpS4G446MpztKgH93p4MRisAHnuoZyyWw1DRUT9rPIkVguzzyAjjb1pE2DOY6g/y7xgzMpOfS2e2I77w==", "license": "AGPL-3.0-only", "dependencies": { "@seamless-auth/types": "^0.4.0", @@ -803,12 +803,12 @@ } }, "node_modules/@seamless-auth/express": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/express/-/express-0.11.0.tgz", - "integrity": "sha512-TlL1fKai/DpAjMAkogcxEw1aGYdB5hKBEw1OXqXpACj4RyympRYrTBhK/8MiiU/YX+zt7hjS9Zoc7pLCQhYcjw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/express/-/express-0.12.0.tgz", + "integrity": "sha512-vg7Dr9iU2Mzhl9poSXhmeltDDlN2abSOAlR2B+R2+HEkLrebSk3PQWKToj+AJURXl5YnOHnsjOTsef57sg6Urg==", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/core": "^0.11.0", + "@seamless-auth/core": "^0.12.0", "cookie-parser": "^1.4.6", "jsonwebtoken": "^9.0.3" }, diff --git a/templates/api/express/package.json b/templates/api/express/package.json index e3ff731..724601e 100644 --- a/templates/api/express/package.json +++ b/templates/api/express/package.json @@ -17,7 +17,7 @@ "lint": "npx eslint src" }, "dependencies": { - "@seamless-auth/express": "^0.11.0", + "@seamless-auth/express": "^0.12.0", "cookie-parser": "^1.4.7", "cors": "^2.8.5", "dotenv": "^16.6.1", diff --git a/templates/api/fastify/package-lock.json b/templates/api/fastify/package-lock.json index 9b0ccf8..afdd455 100644 --- a/templates/api/fastify/package-lock.json +++ b/templates/api/fastify/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@fastify/cookie": "^11.1.2", "@fastify/cors": "^11.3.0", - "@seamless-auth/fastify": "^0.2.0", + "@seamless-auth/fastify": "^0.3.0", "dotenv": "^16.6.1", "fastify": "^5.11.0", "pg": "^8.16.3", @@ -957,9 +957,9 @@ } }, "node_modules/@seamless-auth/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/core/-/core-0.11.0.tgz", - "integrity": "sha512-qChaPnT/0KT3tq3CYTHxbcOdQJxpcEtJCAhXgzMQFQj1rEngJpzTYcP3lwi2m7VrYS68So6VstJRCwtPcYfojg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/core/-/core-0.12.0.tgz", + "integrity": "sha512-lK2iZLOpS4G446MpztKgH93p4MRisAHnuoZyyWw1DRUT9rPIkVguzzyAjjb1pE2DOY6g/y7xgzMpOfS2e2I77w==", "license": "AGPL-3.0-only", "dependencies": { "@seamless-auth/types": "^0.4.0", @@ -971,13 +971,13 @@ } }, "node_modules/@seamless-auth/fastify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/fastify/-/fastify-0.2.0.tgz", - "integrity": "sha512-eBWBz4tkb/gXIsEce4q5pEDRZIdd/eH3SizA5wd5x9jilR55VGJmIknoTUvPSS/9+ujmHSRButhqsLVab9sjyQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/fastify/-/fastify-0.3.0.tgz", + "integrity": "sha512-3w24OAbLMCaOxKftM30owXRvh8khi+ptCBL7vLI8j5qek/II+tgH1ID8EKRgZc/A9bRRajEcBDZh3aBE4lh++Q==", "license": "AGPL-3.0-only", "dependencies": { "@fastify/cookie": "^11.0.2", - "@seamless-auth/core": "^0.11.0", + "@seamless-auth/core": "^0.12.0", "fastify-plugin": "^5.0.1" }, "engines": { diff --git a/templates/api/fastify/package.json b/templates/api/fastify/package.json index 4568303..806d2a8 100644 --- a/templates/api/fastify/package.json +++ b/templates/api/fastify/package.json @@ -19,7 +19,7 @@ "dependencies": { "@fastify/cookie": "^11.1.2", "@fastify/cors": "^11.3.0", - "@seamless-auth/fastify": "^0.2.0", + "@seamless-auth/fastify": "^0.3.0", "dotenv": "^16.6.1", "fastify": "^5.11.0", "pg": "^8.16.3", diff --git a/templates/web/react-oauth/package-lock.json b/templates/web/react-oauth/package-lock.json index 9ae3629..ccbb24b 100644 --- a/templates/web/react-oauth/package-lock.json +++ b/templates/web/react-oauth/package-lock.json @@ -9,7 +9,7 @@ "version": "0.2.1", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/react": "^0.7.0", + "@seamless-auth/react": "^0.8.0", "@tailwindcss/vite": "^4.1.17", "lucide-react": "^0.554.0", "react": "^19.1.1", @@ -1369,12 +1369,12 @@ ] }, "node_modules/@seamless-auth/react": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/react/-/react-0.7.0.tgz", - "integrity": "sha512-LhEKHmAEzl41onAvC3HqAbEvfAbnNTc8+3oGZtxv2YZQYNqWBAWdOk2Mq80JhixCThRUPN10yurvv7PDdsiNUg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/react/-/react-0.8.0.tgz", + "integrity": "sha512-8kKo8XMzQf+mlATOrWnAsIfZthxt2XW1ZO2o3kosjxloWZcQG5lZyrdWByhszp3crih04iTzPd45/r5kC9tlwg==", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/types": "^0.4.0", + "@seamless-auth/types": "^0.5.0", "@simplewebauthn/browser": "^13.1.0", "eslint-plugin-license-header": "^0.9.0", "libphonenumber-js": "^1.12.7", @@ -1391,9 +1391,9 @@ } }, "node_modules/@seamless-auth/types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@seamless-auth/types/-/types-0.4.1.tgz", - "integrity": "sha512-8yHPpu3Gzvc5EJEPRmitnniRHHBN7CcMVwfHb0w6qE+1e5Z062U0secoHEb1jOwMjV67XNanlMo6lks9RZ8UtA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/types/-/types-0.5.0.tgz", + "integrity": "sha512-T566YQu8FqUmqgte0A0iJpjTDXUKq/d/7uvLlXGXKtdl52Edo0r3iafL3kx4OM0cRJM63tBGe9s4MTjRUth6yA==", "license": "AGPL-3.0-only", "dependencies": { "zod": "^4.3.6" diff --git a/templates/web/react-oauth/package.json b/templates/web/react-oauth/package.json index ff44040..1d267df 100644 --- a/templates/web/react-oauth/package.json +++ b/templates/web/react-oauth/package.json @@ -17,7 +17,7 @@ }, "author": "Fells Code LLC", "dependencies": { - "@seamless-auth/react": "^0.7.0", + "@seamless-auth/react": "^0.8.0", "@tailwindcss/vite": "^4.1.17", "lucide-react": "^0.554.0", "react": "^19.1.1", diff --git a/templates/web/react-vite/package-lock.json b/templates/web/react-vite/package-lock.json index 7b5855e..e56324c 100644 --- a/templates/web/react-vite/package-lock.json +++ b/templates/web/react-vite/package-lock.json @@ -9,7 +9,7 @@ "version": "0.2.1", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/react": "^0.7.0", + "@seamless-auth/react": "^0.8.0", "@tailwindcss/vite": "^4.1.17", "lucide-react": "^0.554.0", "react": "^19.1.1", @@ -1369,12 +1369,12 @@ ] }, "node_modules/@seamless-auth/react": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@seamless-auth/react/-/react-0.7.0.tgz", - "integrity": "sha512-LhEKHmAEzl41onAvC3HqAbEvfAbnNTc8+3oGZtxv2YZQYNqWBAWdOk2Mq80JhixCThRUPN10yurvv7PDdsiNUg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/react/-/react-0.8.0.tgz", + "integrity": "sha512-8kKo8XMzQf+mlATOrWnAsIfZthxt2XW1ZO2o3kosjxloWZcQG5lZyrdWByhszp3crih04iTzPd45/r5kC9tlwg==", "license": "AGPL-3.0-only", "dependencies": { - "@seamless-auth/types": "^0.4.0", + "@seamless-auth/types": "^0.5.0", "@simplewebauthn/browser": "^13.1.0", "eslint-plugin-license-header": "^0.9.0", "libphonenumber-js": "^1.12.7", @@ -1391,9 +1391,9 @@ } }, "node_modules/@seamless-auth/types": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@seamless-auth/types/-/types-0.4.1.tgz", - "integrity": "sha512-8yHPpu3Gzvc5EJEPRmitnniRHHBN7CcMVwfHb0w6qE+1e5Z062U0secoHEb1jOwMjV67XNanlMo6lks9RZ8UtA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@seamless-auth/types/-/types-0.5.0.tgz", + "integrity": "sha512-T566YQu8FqUmqgte0A0iJpjTDXUKq/d/7uvLlXGXKtdl52Edo0r3iafL3kx4OM0cRJM63tBGe9s4MTjRUth6yA==", "license": "AGPL-3.0-only", "dependencies": { "zod": "^4.3.6" diff --git a/templates/web/react-vite/package.json b/templates/web/react-vite/package.json index f9ae09e..05da8d0 100644 --- a/templates/web/react-vite/package.json +++ b/templates/web/react-vite/package.json @@ -16,7 +16,7 @@ }, "author": "Fells Code LLC", "dependencies": { - "@seamless-auth/react": "^0.7.0", + "@seamless-auth/react": "^0.8.0", "@tailwindcss/vite": "^4.1.17", "lucide-react": "^0.554.0", "react": "^19.1.1",