From d4e22eb344ec4beee258d1fb02e6fe8d744fd131 Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Fri, 24 Jul 2026 20:14:09 +0530 Subject: [PATCH 1/2] fix: show real OAuth error on failure relay page When project is missing but an error query param is present, display the actual OAuth failure instead of the misleading "Missing redirect URL" message. --- .../(public)/auth/oauth2/failure/+page.svelte | 46 +++++++++++++++---- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/src/routes/(public)/auth/oauth2/failure/+page.svelte b/src/routes/(public)/auth/oauth2/failure/+page.svelte index df84e3a468..5ab80ecaf4 100644 --- a/src/routes/(public)/auth/oauth2/failure/+page.svelte +++ b/src/routes/(public)/auth/oauth2/failure/+page.svelte @@ -3,11 +3,27 @@ import { Typography } from '@appwrite.io/pink-svelte'; const project = page.url.searchParams.get('project'); + const errorParam = page.url.searchParams.get('error'); const link = `appwrite-callback-${project}://${page.url.search}`; + type OAuthError = { + message?: string; + type?: string; + code?: number; + }; + + let oauthError: OAuthError | null = null; + if (errorParam) { + try { + oauthError = JSON.parse(errorParam) as OAuthError; + } catch { + oauthError = { message: errorParam }; + } + } + const redirect = new Promise((_resolve, reject) => { if (!project) { - reject('no-project'); + reject(oauthError ? 'oauth-error' : 'no-project'); } window.location.href = link; }); @@ -27,15 +43,25 @@ {:catch}
- Missing redirect URL -

- Your OAuth login flow is missing a proper redirect URL. Please check the - OAuth docs - and send request for new session with a valid callback URL. -

+ {#if oauthError} + Login failed +

+ {oauthError.message ?? 'An error occurred during the OAuth login flow.'} +

+ {#if oauthError.type} +

Error type: {oauthError.type}

+ {/if} + {:else} + Missing redirect URL +

+ Your OAuth login flow is missing a proper redirect URL. Please check the + OAuth docs + and send request for new session with a valid callback URL. +

+ {/if}
{/await} From 9559127a801eebede1520c67b7bf8ce2a9f033be Mon Sep 17 00:00:00 2001 From: Chirag Aggarwal Date: Sat, 25 Jul 2026 09:18:58 +0530 Subject: [PATCH 2/2] fix: pin postcss and brace-expansion to clear high-severity audit Co-authored-by: Cursor --- bun.lock | 9 +++++---- package.json | 5 +++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/bun.lock b/bun.lock index 664450fbeb..ef28594b87 100644 --- a/bun.lock +++ b/bun.lock @@ -90,7 +90,7 @@ }, }, "overrides": { - "brace-expansion": ">=5.0.7", + "brace-expansion": ">=5.0.8", "cookie": "^0.7.0", "devalue": "^5.8.1", "flatted": "^3.4.2", @@ -98,6 +98,7 @@ "js-yaml": "^4.3.0", "minimatch": "10.2.3", "picomatch": "^4.0.4", + "postcss": "^8.5.18", "vite": "npm:rolldown-vite@latest", "ws": "^8.21.0", "yaml": "^1.10.3", @@ -649,7 +650,7 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - "brace-expansion": ["brace-expansion@5.0.7", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA=="], + "brace-expansion": ["brace-expansion@5.0.8", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -1193,7 +1194,7 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], + "postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], "postcss-load-config": ["postcss-load-config@3.1.4", "", { "dependencies": { "lilconfig": "^2.0.5", "yaml": "^1.10.2" }, "peerDependencies": { "postcss": ">=8.0.9", "ts-node": ">=9.0.0" }, "optionalPeers": ["postcss", "ts-node"] }, "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg=="], @@ -1573,7 +1574,7 @@ "popmotion/tslib": ["tslib@2.4.0", "", {}, "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="], - "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], "style-value-types/tslib": ["tslib@2.4.0", "", {}, "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="], diff --git a/package.json b/package.json index 38942e9616..72c88a0eb2 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,7 @@ "overrides": { "vite": "npm:rolldown-vite@latest", "minimatch": "10.2.3", - "brace-expansion": ">=5.0.7", + "brace-expansion": ">=5.0.8", "js-yaml": "^4.3.0", "immutable": "^5.1.8", "flatted": "^3.4.2", @@ -112,6 +112,7 @@ "yaml": "^1.10.3", "picomatch": "^4.0.4", "cookie": "^0.7.0", - "ws": "^8.21.0" + "ws": "^8.21.0", + "postcss": "^8.5.18" } }