From 3f56d294ba173396c9966a13ba0d2727c706d84e Mon Sep 17 00:00:00 2001 From: Andre Nogueira Date: Sat, 12 Sep 2026 13:16:04 +0100 Subject: [PATCH 1/3] fix(unkee): 404 on /unkee/sync-confirmed after Cloud Sync sign-in MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sync backend (routes/auth.ts) redirects mobile clients here after a magic-link sign-in is approved, but no page existed at this path and it was never registered in the AASA (apple-app-site-association) component list — so on iOS the link never even qualified as a universal link, it always fell through to Safari and 404'd there, regardless of whether the app was installed. Adds a static SvelteKit page at /unkee/sync-confirmed acting as a sensible fallback (works with or without the app installed), and adds the path to the AASA component list so the main UnKee app intercepts it as a universal link when installed. Android already covers this: its manifest verifies the whole techquests.dev/unkee/* prefix rather than enumerating paths. Signed-off-by: Andre Nogueira --- src/routes/unkee/sync-confirmed/+page.js | 9 ++++ src/routes/unkee/sync-confirmed/+page.svelte | 53 +++++++++++++++++++ static/.well-known/apple-app-site-association | 2 + 3 files changed, 64 insertions(+) create mode 100644 src/routes/unkee/sync-confirmed/+page.js create mode 100644 src/routes/unkee/sync-confirmed/+page.svelte diff --git a/src/routes/unkee/sync-confirmed/+page.js b/src/routes/unkee/sync-confirmed/+page.js new file mode 100644 index 0000000..11b9f8a --- /dev/null +++ b/src/routes/unkee/sync-confirmed/+page.js @@ -0,0 +1,9 @@ +export function load() { + return { + meta: { + title: 'Signed in | UnKee', + description: 'Your UnKee Cloud Sync sign-in was confirmed.', + type: 'unkee-sync-confirmed' + } + }; +} diff --git a/src/routes/unkee/sync-confirmed/+page.svelte b/src/routes/unkee/sync-confirmed/+page.svelte new file mode 100644 index 0000000..118e7e5 --- /dev/null +++ b/src/routes/unkee/sync-confirmed/+page.svelte @@ -0,0 +1,53 @@ +
+
+
UnKee
+

You're signed in

+

+ Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch + back to UnKee — you can close this tab. +

+
+
+ + diff --git a/static/.well-known/apple-app-site-association b/static/.well-known/apple-app-site-association index 51c0e74..54dce08 100644 --- a/static/.well-known/apple-app-site-association +++ b/static/.well-known/apple-app-site-association @@ -10,6 +10,8 @@ { "/": "/unkee/autofill/*", "comment": "AutoFill unlock-stub hands off after Face ID" }, { "/": "/unkee/open", "comment": "Spotlight tap / Siri intent / App Shortcut" }, { "/": "/unkee/open/*", "comment": "Spotlight tap / Siri intent / App Shortcut" }, + { "/": "/unkee/sync-confirmed", "comment": "Cloud Sync magic-link confirm hands back to the app" }, + { "/": "/unkee/sync-confirmed/*", "comment": "Cloud Sync magic-link confirm hands back to the app" }, { "/": "/unkee/passkey-create", "comment": "Passkey registration ceremony" }, { "/": "/unkee/passkey-create/*", "comment": "Passkey registration ceremony" }, { "/": "/unkee/passkey-get", "comment": "Passkey assertion ceremony" }, From 57e25729ef4727ee59fcaddd96c005344ff4e117 Mon Sep 17 00:00:00 2001 From: Andre Nogueira Date: Sun, 13 Sep 2026 22:30:31 +0100 Subject: [PATCH 2/3] fix(authenticator): universal link + fallback page for Cloud Sync sign-in Adds the Authenticator counterpart to /unkee/sync-confirmed: a /authenticator/sync-confirmed page plus its own AASA entry (293M4MWUJC.dev.techquests.unkeeauth), so Authenticator's Cloud Sync sign-in hands back to the right app/branding instead of falling through to UnKee's. Signed-off-by: Andre Nogueira --- .../authenticator/sync-confirmed/+page.js | 9 ++++ .../authenticator/sync-confirmed/+page.svelte | 53 +++++++++++++++++++ static/.well-known/apple-app-site-association | 7 +++ 3 files changed, 69 insertions(+) create mode 100644 src/routes/authenticator/sync-confirmed/+page.js create mode 100644 src/routes/authenticator/sync-confirmed/+page.svelte diff --git a/src/routes/authenticator/sync-confirmed/+page.js b/src/routes/authenticator/sync-confirmed/+page.js new file mode 100644 index 0000000..9560cbe --- /dev/null +++ b/src/routes/authenticator/sync-confirmed/+page.js @@ -0,0 +1,9 @@ +export function load() { + return { + meta: { + title: 'Signed in | Authenticator', + description: 'Your Authenticator Cloud Sync sign-in was confirmed.', + type: 'authenticator-sync-confirmed' + } + }; +} diff --git a/src/routes/authenticator/sync-confirmed/+page.svelte b/src/routes/authenticator/sync-confirmed/+page.svelte new file mode 100644 index 0000000..6e54a49 --- /dev/null +++ b/src/routes/authenticator/sync-confirmed/+page.svelte @@ -0,0 +1,53 @@ +
+
+
Authenticator
+

You're signed in

+

+ Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch + back to Authenticator — you can close this tab. +

+
+
+ + diff --git a/static/.well-known/apple-app-site-association b/static/.well-known/apple-app-site-association index 54dce08..107b660 100644 --- a/static/.well-known/apple-app-site-association +++ b/static/.well-known/apple-app-site-association @@ -17,6 +17,13 @@ { "/": "/unkee/passkey-get", "comment": "Passkey assertion ceremony" }, { "/": "/unkee/passkey-get/*", "comment": "Passkey assertion ceremony" } ] + }, + { + "appIDs": ["293M4MWUJC.dev.techquests.unkeeauth"], + "components": [ + { "/": "/authenticator/sync-confirmed", "comment": "Cloud Sync magic-link confirm hands back to the app" }, + { "/": "/authenticator/sync-confirmed/*", "comment": "Cloud Sync magic-link confirm hands back to the app" } + ] } ] }, From 1e2c861d40086960a6e485f64fe4330f5def91f3 Mon Sep 17 00:00:00 2001 From: Andre Nogueira Date: Sun, 13 Sep 2026 23:15:11 +0100 Subject: [PATCH 3/3] fix: run prettier over the sync-confirmed pages Both were failing CI's lint-and-test job on formatting; fixes the pre-existing unkee page too since this branch already touches it. Signed-off-by: Andre Nogueira --- src/routes/authenticator/sync-confirmed/+page.svelte | 4 ++-- src/routes/unkee/sync-confirmed/+page.svelte | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/authenticator/sync-confirmed/+page.svelte b/src/routes/authenticator/sync-confirmed/+page.svelte index 6e54a49..2703d08 100644 --- a/src/routes/authenticator/sync-confirmed/+page.svelte +++ b/src/routes/authenticator/sync-confirmed/+page.svelte @@ -3,8 +3,8 @@
Authenticator

You're signed in

- Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch - back to Authenticator — you can close this tab. + Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch back + to Authenticator — you can close this tab.

diff --git a/src/routes/unkee/sync-confirmed/+page.svelte b/src/routes/unkee/sync-confirmed/+page.svelte index 118e7e5..bc273ca 100644 --- a/src/routes/unkee/sync-confirmed/+page.svelte +++ b/src/routes/unkee/sync-confirmed/+page.svelte @@ -3,8 +3,8 @@
UnKee

You're signed in

- Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch - back to UnKee — you can close this tab. + Cloud Sync sign-in was confirmed. If you're not returned to the app automatically, switch back + to UnKee — you can close this tab.