From 6a2f3c102443ea8d340d3c10d165f46843950a01 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 24 Sep 2025 18:30:14 +0530 Subject: [PATCH 001/300] feat: show CSV import error details with inline indicator and modal --- src/lib/components/csvImportBox.svelte | 69 ++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index ec7a2c9a3e..12b721e9f3 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -8,7 +8,9 @@ import { getProjectId } from '$lib/helpers/project'; import { writable, type Writable } from 'svelte/store'; import { addNotification } from '$lib/stores/notifications'; - import { Layout, Typography } from '@appwrite.io/pink-svelte'; + import { Layout, Typography, Icon } from '@appwrite.io/pink-svelte'; + import { IconExclamationCircle } from '@appwrite.io/pink-icons-svelte'; + import { Modal, Code } from '$lib/components'; import { type Models, type Payload, Query } from '@appwrite.io/console'; // re-render the key for sheet UI. @@ -18,6 +20,7 @@ type ImportItem = { status: string; table?: string; + errors?: string[]; }; type ImportItemsMap = Map; @@ -112,7 +115,10 @@ if (shouldSkip) return items; const next = new Map(items); - next.set(importData.$id, { status, table: tableName ?? undefined }); + const errors = Array.isArray((importData as Payload).errors) + ? ((importData as Payload).errors as string[]) + : undefined; + next.set(importData.$id, { status, table: tableName ?? undefined, errors }); return next; }); @@ -138,7 +144,7 @@ return 60; case 'completed': case 'failed': - return 100; + return 60; default: return 30; } @@ -149,7 +155,7 @@ switch (status) { case 'completed': case 'failed': - return `Import to ${name} ${status}`; + return `Importing CSV file${name ? ` to ${name}` : ''}`; case 'processing': return `Importing CSV file${name ? ` to ${name}` : ''}`; default: @@ -179,6 +185,22 @@ $: isOpen = true; $: showCsvImportBox = $importItems.size > 0; + + let showDetails = false; + let selectedErrors: string[] = []; + + function openDetails(errors: string[] | undefined) { + selectedErrors = errors ?? []; + showDetails = true; + } + + $: parsedErrors = selectedErrors.map((err) => { + try { + return JSON.stringify(JSON.parse(err), null, 2); + } catch { + return err; + } + }); {#if showCsvImportBox} @@ -222,6 +244,25 @@ class:is-danger={value.status === 'failed'} style="--graph-size:{graphSize(value.status)}%"> + {#if value.status === 'failed'} + + + + There was an import issue. + + + + {/if} @@ -232,6 +273,14 @@ {/if} + + + + + + + + From 21940ef1dac5b3e31acf821f6bceaa048ac781f9 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 24 Sep 2025 18:40:49 +0530 Subject: [PATCH 002/300] lint issue --- src/lib/components/csvImportBox.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 12b721e9f3..f3b18e2ad9 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -324,7 +324,6 @@ } } - .link-button { background: none; border: none; From e9730d42074106c9ebe8f3ad5243cf8d45f16f0e Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 24 Sep 2025 19:03:55 +0530 Subject: [PATCH 003/300] removed button and using Link --- src/lib/components/csvImportBox.svelte | 16 ++++------------ src/lib/elements/link.svelte | 12 +++++++++++- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index f3b18e2ad9..e736e606c5 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -16,6 +16,7 @@ // re-render the key for sheet UI. import { hash } from '$lib/helpers/string'; import { spreadsheetRenderKey } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store'; + import Link from '$lib/elements/link.svelte'; type ImportItem = { status: string; @@ -256,10 +257,10 @@ size="s" /> There was an import issue. - + >View details {/if} @@ -323,13 +324,4 @@ background-color: var(--bgcolor-error); } } - - .link-button { - background: none; - border: none; - padding: 0; - color: var(--fgcolor-error); - text-decoration: underline; - cursor: pointer; - } diff --git a/src/lib/elements/link.svelte b/src/lib/elements/link.svelte index 6e75e98a5c..444a94d186 100644 --- a/src/lib/elements/link.svelte +++ b/src/lib/elements/link.svelte @@ -29,6 +29,7 @@ {#if href} {:else} - + {/if} From ae43a4d044eddb5c9e2b84dd2847d745db781c7d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 24 Sep 2025 19:17:21 +0530 Subject: [PATCH 004/300] remove reactive --- src/lib/components/csvImportBox.svelte | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index e736e606c5..8c0cd9f6ba 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -189,19 +189,19 @@ let showDetails = false; let selectedErrors: string[] = []; + let parsedErrors: string[] = []; function openDetails(errors: string[] | undefined) { selectedErrors = errors ?? []; + parsedErrors = selectedErrors.map((err) => { + try { + return JSON.stringify(JSON.parse(err), null, 2); + } catch { + return err; + } + }); showDetails = true; } - - $: parsedErrors = selectedErrors.map((err) => { - try { - return JSON.stringify(JSON.parse(err), null, 2); - } catch { - return err; - } - }); {#if showCsvImportBox} From 893e9b39073728e4256de750de378bb087741dc2 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 25 Sep 2025 17:29:25 +0530 Subject: [PATCH 005/300] feat: add API key card --- .../overview/assets/platform-sdk-dark.png | Bin 0 -> 414621 bytes .../overview/assets/platform-sdk.jpg | Bin 0 -> 31766 bytes .../overview/onboard.svelte | 54 ++++++++++++------ 3 files changed, 36 insertions(+), 18 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png create mode 100644 src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk.jpg diff --git a/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png b/src/routes/(console)/project-[region]-[project]/overview/assets/platform-sdk-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..da67106115dc2770777803efabf77c05045ba113 GIT binary patch literal 414621 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

$wkB?m}(L>naFg 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

gD8Dq4ihkg02AEUc`oKLD|-TIi|1QIiLO+3OhJ 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

(YiB(Iw}VqtGyj^vm(*MUr2`Pqfx>6qKI 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 i{y#X6|B^~q?|sl;KmQ*qkqSBh literal 0 HcmV?d00001 diff --git a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte index c1c3811e4b..2b616f114b 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte @@ -14,12 +14,7 @@ import { app } from '$lib/stores/app'; import AuthPreview from './assets/auth-preview.svg'; import AuthPreviewDark from './assets/auth-preview-dark.svg'; - import { - IconArrowRight, - IconNodeJs, - IconPhp, - IconPython - } from '@appwrite.io/pink-icons-svelte'; + import { IconArrowRight } from '@appwrite.io/pink-icons-svelte'; import DatabaseImgSource from './assets/database.png'; import DatabaseImgSourceDark from './assets/database-dark.png'; import DiscordImgSource from './assets/discord.png'; @@ -31,9 +26,10 @@ import PlatformAndroidImgSourceDark from './assets/platform-android-dark.svg'; import PlatformFlutterImgSource from './assets/platform-flutter.svg'; import PlatformFlutterImgSourceDark from './assets/platform-flutter-dark.svg'; + import PlatformSdkImgSource from './assets/platform-sdk.jpg'; + import PlatformSdkImgSourceDark from './assets/platform-sdk-dark.png'; import { base } from '$app/paths'; import { isSmallViewport } from '$lib/stores/viewport'; - import { AvatarGroup } from '$lib/components'; import type { Models } from '@appwrite.io/console'; import { getPlatformInfo } from '$lib/helpers/platform'; import { Click, trackEvent } from '$lib/actions/analytics'; @@ -341,17 +337,34 @@ - - Or connect - server side -

- + or + + + +
+
+ + + Create API key + Connect your server or backend to Appwrite + +
+ +
+
+
+
Date: Thu, 25 Sep 2025 18:16:24 +0530 Subject: [PATCH 006/300] improved layout of card --- .../overview/onboard.svelte | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte index 2b616f114b..b907eb030e 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte @@ -339,7 +339,7 @@ or - +
-
- - - Create API key - Connect your server or backend to Appwrite + + + Create API key + Connect your server or backend to Appwrite + +
+ +
-
- -
-
+
@@ -701,6 +701,19 @@ background-size: cover; background-position: right center; background-repeat: no-repeat; + margin: 0; + width: 100%; + height: 100%; + min-height: 160px; + border-radius: var(--border-radius-m); + display: flex; + flex-direction: column; + justify-content: flex-end; + align-items: flex-start; + padding: var(--base-16, 16px); + @media (min-width: 1200px) { + min-height: 187px; + } } .full-height-card { height: 100%; From 8f0376e01a8fa35beeb07b792f16fdc89aa35ba3 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 26 Sep 2025 11:52:38 +0530 Subject: [PATCH 007/300] Add ApiEndpoint and API key components to key pages - Show copy buttons in API key creation notification - Replace regional endpoint references with API endpoint --- src/lib/components/apiEndpoint.svelte | 15 +++++++++++++++ src/lib/components/id.svelte | 3 ++- src/lib/components/index.ts | 1 + .../overview/(components)/create.svelte | 15 +++++++++++++-- .../overview/api-keys/[key]/header.svelte | 17 +++++++++++++++++ .../overview/header.svelte | 8 ++++---- 6 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 src/lib/components/apiEndpoint.svelte diff --git a/src/lib/components/apiEndpoint.svelte b/src/lib/components/apiEndpoint.svelte new file mode 100644 index 0000000000..33e70341d0 --- /dev/null +++ b/src/lib/components/apiEndpoint.svelte @@ -0,0 +1,15 @@ + + + + + + + API endpoint + + + diff --git a/src/lib/components/id.svelte b/src/lib/components/id.svelte index c756ee8f6a..24fc4205d4 100644 --- a/src/lib/components/id.svelte +++ b/src/lib/components/id.svelte @@ -53,10 +53,11 @@ export let tooltipPortal = false; export let tooltipDelay: number = 0; export let tooltipPlacement: TooltipPlacement = undefined; + export let copyText: string | undefined = undefined; {#key value} - + navigator.clipboard.writeText(secret) + }, + { + name: 'Copy endpoint', + method: () => + navigator.clipboard.writeText(sdk.forConsole.client.config.endpoint) + } + ] }); } catch (error) { addNotification({ diff --git a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte index 0b4b527d63..b568647b30 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte @@ -3,6 +3,9 @@ import { page } from '$app/state'; import { Cover, CoverTitle } from '$lib/layout'; import { key } from './store'; + import { ApiEndpoint, Copy } from '$lib/components'; + import { Layout, Tag, Icon } from '@appwrite.io/pink-svelte'; + import { IconDuplicate } from '@appwrite.io/pink-icons-svelte'; const projectId = page.params.project; @@ -12,5 +15,19 @@ {$key?.name} + + + + + + API key + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte index 8a412281c1..82f769db9a 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte @@ -1,8 +1,8 @@ - - - - - - - - {#if $canWriteProviders} - - - - {/if} - - + + {#if $canWriteProviders} + + + + {/if} + {#if data.providers.total} From b8a472f3c203686d5e43efa7e8215bd36e8db614 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:17:56 +0530 Subject: [PATCH 012/300] lint issue --- .../messaging/providers/+page.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte index 8086a93bda..e1e5d1c4f8 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte @@ -1,11 +1,7 @@ -
- - {#if $$slots.subtitle} -

- -

- {/if} -
+ {#if $$slots.title || $$slots.subtitle} +
+ + {#if $$slots.subtitle} +

+ +

+ {/if} +
+ {/if}
From 448ab6651729431aedc6e1e145c594971aa507cf Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:44:20 +0530 Subject: [PATCH 015/300] Remove unnecessary extra spacing here --- src/lib/layout/wizardStep.svelte | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib/layout/wizardStep.svelte b/src/lib/layout/wizardStep.svelte index 7ab7e88945..591fb62e8e 100644 --- a/src/lib/layout/wizardStep.svelte +++ b/src/lib/layout/wizardStep.svelte @@ -22,8 +22,13 @@ {#if $$slots.title || $$slots.subtitle} -
- +
+ {#if $$slots.title} + + {/if} {#if $$slots.subtitle}

@@ -44,4 +49,8 @@ padding-block-end: 0; border-block-end: none; } + + .only-subtitle { + margin-block-end: 0.5rem; + } From dbee85e982e43d319e33f4b64b5f32a53a59d625 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:50:25 +0530 Subject: [PATCH 016/300] Read the guide in the docs should open a new tab --- .../messaging/providers/create.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte index a26def4fd9..96da3d9e9e 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte @@ -227,7 +227,9 @@ hasDivider href={`https://appwrite.io/docs/products/messaging/${$provider}`} title="Read the guide in the docs" - icon={IconBookOpen} /> + icon={IconBookOpen} + target="_blank" + rel="noreferrer" /> { $newMemberModal = true; From 13c68f00e830bd6b1ae040bebaf2bcf68027283a Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 15:55:35 +0530 Subject: [PATCH 017/300] Add wizard footer with Create button (Currently we have a divider and a button in the wrong place) --- .../messaging/providers/create.svelte | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte index 96da3d9e9e..a2b6160d58 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte @@ -21,6 +21,8 @@ import { providers } from './store'; import CreateMember from '$routes/(console)/organization-[organization]/createMember.svelte'; + let formRef: any; + async function create() { try { let response: Models.Provider; @@ -185,7 +187,7 @@ -
+

@@ -193,9 +195,6 @@
- - - @@ -243,4 +242,9 @@ {#if $newMemberModal} {/if} + + + + + From a41cfd895834a72b7aa27fab57e60580ed4be12e Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 19:30:57 +0530 Subject: [PATCH 018/300] fix subscribers screen --- .../messaging/topics/topic-[topic]/+page.svelte | 6 ++---- .../messaging/userTargetsModal.svelte | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+page.svelte b/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+page.svelte index 338601be6d..f7aac1d13c 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+page.svelte @@ -71,9 +71,7 @@ await Promise.all(promises); addNotification({ type: 'success', - message: `Added ${targetIds.length} subscriber${ - targetIds.length > 1 ? 's' : '' - } to topic` + message: `${targetIds.length} subscriber${targetIds.length !== 1 ? 's' : ''} have been added` }); trackEvent(Submit.MessagingTopicSubscriberAdd); await invalidate(Dependencies.MESSAGING_TOPIC_SUBSCRIBERS); @@ -146,7 +144,7 @@ href="https://appwrite.io/docs/products/messaging/topics#subscribe-targets-to-topics" target="_blank" rel="noopener noreferrer" - class="link">Learn more about subscribersLearn more.

diff --git a/src/routes/(console)/project-[region]-[project]/messaging/userTargetsModal.svelte b/src/routes/(console)/project-[region]-[project]/messaging/userTargetsModal.svelte index 8478762f1c..179c869d9a 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/userTargetsModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/userTargetsModal.svelte @@ -216,7 +216,7 @@ Users selected - + From 8a9efc1457ebf094082307c4b49876f1d0d0db92 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 30 Sep 2025 19:37:29 +0530 Subject: [PATCH 019/300] fixed the width of provider popup --- .../messaging/providers/popoverContent.svelte | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/popoverContent.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/popoverContent.svelte index 7b9a1e7239..335b3bc281 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/popoverContent.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/popoverContent.svelte @@ -1,21 +1,28 @@ -
+
{#each lines as line}

{@html line}

{/each} {#if image} - + + + {/if}
From 05d86898013b9b5fb9c35044ee2ae916aa3895c9 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 6 Oct 2025 16:27:52 +0530 Subject: [PATCH 035/300] update: widths. --- .../table-[table]/indexes/+page.svelte | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index ffdb00d27a..08c138cf80 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -65,14 +65,14 @@ const spreadsheetColumns = $derived([ { id: 'key', - width: getColumnWidth('key', $isSmallViewport ? 250 : 200), - minimumWidth: $isSmallViewport ? 250 : 200, + width: getColumnWidth('key', 250), + minimumWidth: 250, resizable: true }, { id: 'type', - width: getColumnWidth('type', 120), - minimumWidth: 120, + width: getColumnWidth('type', 200), + minimumWidth: 200, resizable: true }, { From 9ec11dc9bb3f9da1374c141b8daa93ff8d3b0010 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 6 Oct 2025 17:17:51 +0530 Subject: [PATCH 036/300] update: columns ai suggestions [wip]. --- src/lib/elements/forms/inputLine.svelte | 11 +++- src/lib/elements/forms/inputPoint.svelte | 7 ++- src/lib/elements/forms/inputPolygon.svelte | 5 +- .../table-[table]/columns/boolean.svelte | 10 ++- .../table-[table]/columns/datetime.svelte | 14 +++-- .../table-[table]/columns/email.svelte | 14 +++-- .../table-[table]/columns/enum.svelte | 17 ++--- .../table-[table]/columns/float.svelte | 18 ++++-- .../table-[table]/columns/integer.svelte | 21 ++++--- .../table-[table]/columns/ip.svelte | 9 ++- .../table-[table]/columns/line.svelte | 15 ++++- .../table-[table]/columns/point.svelte | 15 ++++- .../table-[table]/columns/polygon.svelte | 15 ++++- .../table-[table]/columns/relationship.svelte | 14 +++-- .../table-[table]/columns/string.svelte | 18 +++--- .../table-[table]/columns/url.svelte | 16 ++--- .../table-[table]/createColumn.svelte | 63 ++++++++++++++++++- 17 files changed, 208 insertions(+), 74 deletions(-) diff --git a/src/lib/elements/forms/inputLine.svelte b/src/lib/elements/forms/inputLine.svelte index 3987b3635b..6bfeb0fe2e 100644 --- a/src/lib/elements/forms/inputLine.svelte +++ b/src/lib/elements/forms/inputLine.svelte @@ -14,6 +14,7 @@ onDeletePoint: (index: number) => void; onChangePoint: (pointIndex: number, coordIndex: number, newValue: number) => void; addLineButton?: Snippet; + disabled?: boolean; }; let { @@ -24,7 +25,8 @@ onAddPoint, onDeletePoint, onChangePoint, - addLineButton + addLineButton, + disabled }: Props = $props(); function isDeleteDisabled(index: number) { @@ -40,6 +42,7 @@ {#each values as value, index} - {@render addLineButton?.()} diff --git a/src/lib/elements/forms/inputPoint.svelte b/src/lib/elements/forms/inputPoint.svelte index 4c0b4ce40f..9a3f70183e 100644 --- a/src/lib/elements/forms/inputPoint.svelte +++ b/src/lib/elements/forms/inputPoint.svelte @@ -10,6 +10,7 @@ deletePoints?: boolean; onDeletePoint?: () => void; disableDelete?: boolean; + disabled?: boolean; onChangePoint: (index: number, newValue: number) => void; } @@ -21,7 +22,8 @@ deletePoints = false, disableDelete = false, onDeletePoint, - onChangePoint + onChangePoint, + disabled }: Props = $props(); @@ -38,6 +40,7 @@ placeholder="Enter value" step={0.0001} value={values[index]} + {disabled} on:change={(e) => onChangePoint(index, Number.parseFloat(`${e.detail}`))} /> {/each} {/if} @@ -45,7 +48,7 @@ diff --git a/src/lib/elements/forms/inputPolygon.svelte b/src/lib/elements/forms/inputPolygon.svelte index c2bcbb4db1..766dfa7d1b 100644 --- a/src/lib/elements/forms/inputPolygon.svelte +++ b/src/lib/elements/forms/inputPolygon.svelte @@ -17,6 +17,7 @@ coordIndex: number, newValue: number ) => void; + disabled?: boolean; }; let { @@ -26,7 +27,8 @@ onAddPoint, onAddLine, onDeletePoint, - onChangePoint + onChangePoint, + disabled }: Props = $props(); @@ -34,6 +36,7 @@ {#each values as value, index} onAddPoint(index)} {nullable} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte index cd09096a4e..83e919630f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/boolean.svelte @@ -39,6 +39,7 @@ import { InputSelect } from '$lib/elements/forms'; export let editing = false; + export let disabled = false; export let data: Partial = { required: false, array: false, @@ -67,6 +68,7 @@ array: false, ...data }); + $: listen(data); $: handleDefaultState($required || $array); @@ -76,24 +78,26 @@ id="default" label="Default value" placeholder="Select a value" - disabled={data.required || data.array} + disabled={data.required || data.array || disabled} options={[ { label: 'NULL', value: null }, { label: 'True', value: true }, { label: 'False', value: false } ]} bind:value={data.default} /> + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte index 827d77798b..5ef5afca14 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/datetime.svelte @@ -42,13 +42,13 @@ + {#if isSuggestionsFeatureEnabled} + + {/if} + @@ -195,6 +248,7 @@ id="type" label="Type" bind:value={selectedOption} + disabled={isSuggestionsEnabled} options={columnOptions.map((attr) => { return { label: attr.name, @@ -206,6 +260,9 @@ {#if selectedOption} - ($option = null)} /> + ($option = null)} /> {/if} From 910625dda45f9ee33d4eb0f2dff3d05d7804f215 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 7 Oct 2025 14:43:58 +0530 Subject: [PATCH 037/300] changed copy --- src/lib/components/copy.svelte | 1 + src/lib/components/regionEndpoint.svelte | 48 +++++++++---------- .../overview/api-keys/[key]/header.svelte | 7 ++- .../overview/header.svelte | 22 ++------- 4 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/lib/components/copy.svelte b/src/lib/components/copy.svelte index c178913c76..d9a619e013 100644 --- a/src/lib/components/copy.svelte +++ b/src/lib/components/copy.svelte @@ -57,6 +57,7 @@ disabled={tooltipDisabled} portal={tooltipPortal} delay={tooltipDelay} + maxWidth="500px" placement={tooltipPlacement}> import { Copy } from '.'; import { sdk } from '$lib/stores/sdk'; - import { Layout, Tag } from '@appwrite.io/pink-svelte'; + import { Icon, Tag } from '@appwrite.io/pink-svelte'; + import { IconDuplicate } from '@appwrite.io/pink-icons-svelte'; import { Flag, type Models } from '@appwrite.io/console'; - import { truncateText } from '$lib/components/id.svelte'; import { isValueOfStringEnum } from '$lib/helpers/types'; import { getProjectEndpoint } from '$lib/helpers/project'; @@ -21,28 +21,28 @@ {#if region} - - - - {#if flagSrc} - {region?.name} - {/if} - - - {region?.name} - - + + + + API endpoint + {#if flagSrc} + {region?.name} + {/if} {/if} + + diff --git a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte index 566e8307f3..5713e9e50b 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/api-keys/[key]/header.svelte @@ -3,9 +3,10 @@ import { page } from '$app/state'; import { Cover, CoverTitle } from '$lib/layout'; import { key } from './store'; - import { ApiEndpoint, Copy } from '$lib/components'; + import { RegionEndpoint, Copy } from '$lib/components'; import { Layout, Tag, Icon } from '@appwrite.io/pink-svelte'; import { IconDuplicate } from '@appwrite.io/pink-icons-svelte'; + import { projectRegion } from '../../../store'; const projectId = page.params.project; @@ -29,7 +30,9 @@ {/if} - + {#if $projectRegion} + + {/if} diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte index b77a6ea56d..6456510b29 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte @@ -1,16 +1,15 @@ @@ -62,7 +62,7 @@ - + + +
(isMouseOverTooltip = true)} + on:mouseleave={() => hidePopover(hide, false)}> + {#if showing} + + {#await getData(role)} + + + {:then data} + {@const isUser = role.startsWith('user')} + {@const isAnonymous = !data.email && !data.phone && !data.name && isUser} + {@const id = role.split(':')[1].split('/')[0]} - - {#if isUser} - {#if data?.email} - Email: {data?.email} - {/if} - {#if data?.phone} - Phone: {data?.phone} + + + {#if isAnonymous} + + + + {:else if data.name} + + {:else} + + + + {/if} + + + + + + {formatName( + data.name ?? data?.email ?? data?.phone ?? '-', + $isSmallViewport ? 12 : 24 + )} + + + + + + + + {#if isUser && (data.email || data.phone)} + + + {#if data.email} + + Email: {data.email} + + {/if} + {#if data.phone} + + Phone: {data.phone} + + {/if} + {/if} -
- - View user - - -
- {:else if isTeam} - Members: {data?.total} -
- - View team - - -
- {/if} -
- {/await} - {/key} +
+ {/await} + + {/if}
{/if} From 939978f4517e227c1578b4a9f8718f5f9c53a8af Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:51:23 +0530 Subject: [PATCH 058/300] fixing style and logic for custom permissions --- src/lib/components/permissions/row.svelte | 284 +++++++++++++++------- 1 file changed, 200 insertions(+), 84 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 6ab8cf5964..dd2dffe6bf 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -25,25 +25,78 @@ export let role: string; export let placement: ComponentProps['placement'] = 'bottom-start'; + interface ParsedPermission { + type: 'user' | 'team' | 'other'; + id: string; + roleName?: string; + isValid: boolean; + } + + function parsePermission(permission: string): ParsedPermission { + try { + const [type, rest] = permission.split(':'); + if (!rest) { + return { type: 'other', id: permission, isValid: false }; + } + + const [id, roleName] = rest.split('/'); + if (!id) { + return { type: 'other', id: permission, isValid: false }; + } + + if (type === 'user' || type === 'team') { + return { + type: type as 'user' | 'team', + id, + roleName, + isValid: true + }; + } + + return { type: 'other', id: permission, isValid: false }; + } catch (error) { + return { type: 'other', id: permission, isValid: false }; + } + } + async function getData( permission: string ): Promise< - Partial> & Models.Team>> + Partial> & Models.Team>> & { + notFound?: boolean; + roleName?: string; + customName?: string; + } > { - const role = permission.split(':')[0]; - const id = permission.split(':')[1].split('/')[0]; - if (role === 'user') { - const user = await sdk - .forProject(page.params.region, page.params.project) - .users.get({ userId: id }); - return user; + const parsed = parsePermission(permission); + + if (!parsed.isValid || parsed.type === 'other') { + return { notFound: true, roleName: parsed.roleName, customName: parsed.id }; + } + + if (parsed.type === 'user') { + try { + const user = await sdk + .forProject(page.params.region, page.params.project) + .users.get({ userId: parsed.id }); + return user; + } catch (error) { + return { notFound: true, roleName: parsed.roleName, customName: parsed.id }; + } } - if (role === 'team') { - const team = await sdk - .forProject(page.params.region, page.params.project) - .teams.get({ teamId: id }); - return team; + + if (parsed.type === 'team') { + try { + const team = await sdk + .forProject(page.params.region, page.params.project) + .teams.get({ teamId: parsed.id }); + return team; + } catch (error) { + return { notFound: true, roleName: parsed.roleName, customName: parsed.id }; + } } + + return { notFound: true, roleName: parsed.roleName, customName: parsed.id }; } let isMouseOverTooltip = false; @@ -59,6 +112,11 @@ } }, 150); } + + function isCustomPermission(role: string): boolean { + const parsed = parsePermission(role); + return !!parsed.roleName || !parsed.isValid; + } {#if role === 'users'} @@ -77,22 +135,28 @@ }} on:mouseleave={() => hidePopover(hide)}> - - - {#await getData(role)} - {role} - {:then data} - {formatName( - data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 5 : 12 - )} - {/await} - - - + {#if isCustomPermission(role)} + + {formatName(role, $isSmallViewport ? 8 : 15)} + + {:else} + + + {#await getData(role)} + {role} + {:then data} + {formatName( + data.name ?? data?.email ?? data?.phone ?? '-', + $isSmallViewport ? 5 : 12 + )} + {/await} + + + + {/if} @@ -101,8 +165,7 @@ let:showing slot="tooltip" role="tooltip" - style:padding="1rem" - style:margin="-1rem" + class="popover" on:mouseenter={() => (isMouseOverTooltip = true)} on:mouseleave={() => hidePopover(hide, false)}> {#if showing} @@ -112,76 +175,129 @@
{:then data} - {@const isUser = role.startsWith('user')} - {@const isAnonymous = !data.email && !data.phone && !data.name && isUser} - {@const id = role.split(':')[1].split('/')[0]} - - - - {#if isAnonymous} - - - - {:else if data.name} - - {:else} + {#if data.notFound} + + - {/if} - - - + + - {formatName( - data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 12 : 24 - )} + {data.customName} - + + {#if data.roleName} + + {:else} + + {/if} - + {:else} + {@const isUser = role.startsWith('user')} + {@const isAnonymous = + !data.email && !data.phone && !data.name && isUser} + {@const id = role.split(':')[1].split('/')[0]} - {#if isUser && (data.email || data.phone)} - - - {#if data.email} - - Email: {data.email} - - {/if} - {#if data.phone} - - Phone: {data.phone} - + + + {#if isAnonymous} + + + + {:else if data.name} + + {:else} + + + {/if} + + + + + + {formatName( + data.name ?? + data?.email ?? + data?.phone ?? + '-', + $isSmallViewport ? 12 : 24 + )} + + + + + - {/if} - + + {#if isUser && (data.email || data.phone)} + + + {#if data.email} + + Email: {data.email} + + {/if} + {#if data.phone} + + Phone: {data.phone} + + {/if} + + {/if} + + {/if} {/await} {/if}
{/if} + + From f72b2420c2b754ef1249619618a77d3ccedff3d5 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 13 Oct 2025 18:01:42 +0530 Subject: [PATCH 059/300] fix formating --- src/lib/components/permissions/row.svelte | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index dd2dffe6bf..f632c269e9 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -59,9 +59,7 @@ } } - async function getData( - permission: string - ): Promise< + async function getData(permission: string): Promise< Partial> & Models.Team>> & { notFound?: boolean; roleName?: string; From 72d4494e6763bb7df0daad9ba477e1d46994c497 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 13 Oct 2025 13:48:29 -0500 Subject: [PATCH 060/300] Remove pnpm store caching from Docker build --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6bdc2d78ac..5da6ccbf2a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ RUN corepack prepare pnpm@10.0.0 --activate ADD ./package.json /app/package.json ADD ./pnpm-lock.yaml /app/pnpm-lock.yaml -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm install --frozen-lockfile ADD ./build.js /app/build.js ADD ./tsconfig.json /app/tsconfig.json From d982b812f9be0aeb5e108d1fef74f0cda64477b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 14 Oct 2025 10:51:48 +0200 Subject: [PATCH 061/300] Enable email verificaiton on Stage --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9fe42390d4..2a19d6fbee 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -83,7 +83,7 @@ jobs: "PUBLIC_CONSOLE_MODE=cloud" "PUBLIC_CONSOLE_FEATURE_FLAGS=" "PUBLIC_APPWRITE_MULTI_REGION=true" - "PUBLIC_CONSOLE_EMAIL_VERIFICATION=false" + "PUBLIC_CONSOLE_EMAIL_VERIFICATION=true" "PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false" "PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}" "PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY_STAGE }}" From 8c3b1b6c7d0252f3f8ab8f75375e700e2ebe8c3d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:48:44 +0530 Subject: [PATCH 062/300] use page currentPlan for limits to refresh button state on org switch --- .../(console)/organization-[organization]/+page.svelte | 7 ++++--- .../(console)/organization-[organization]/header.svelte | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index cd2417f29b..947d507d1f 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -83,12 +83,13 @@ } $: projectCreationDisabled = - (isCloud && getServiceLimit('projects') <= data.projects.total) || + (isCloud && getServiceLimit('projects', null, data.currentPlan) <= data.projects.total) || (isCloud && $readOnly && !GRACE_PERIOD_OVERRIDE) || !$canWriteProjects; - $: reachedProjectLimit = isCloud && getServiceLimit('projects') <= data.projects.total; - $: projectsLimit = getServiceLimit('projects'); + $: reachedProjectLimit = + isCloud && getServiceLimit('projects', null, data.currentPlan) <= data.projects.total; + $: projectsLimit = getServiceLimit('projects', null, data.currentPlan); $: $registerCommands([ { diff --git a/src/routes/(console)/organization-[organization]/header.svelte b/src/routes/(console)/organization-[organization]/header.svelte index 1a81ae48cd..38ec2a743e 100644 --- a/src/routes/(console)/organization-[organization]/header.svelte +++ b/src/routes/(console)/organization-[organization]/header.svelte @@ -29,7 +29,7 @@ let areMembersLimited: boolean = $state(false); $effect(() => { - const limit = getServiceLimit('members') || Infinity; + const limit = getServiceLimit('members', null, page.data.currentPlan) || Infinity; const isLimited = limit !== 0 && limit < Infinity; areMembersLimited = isCloud && From 8c405c4c55db5b88c0478d42e1763248953789ef Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 14 Oct 2025 15:11:19 +0530 Subject: [PATCH 063/300] fix: prevent redirect loop on verify-email page --- src/routes/(console)/verify-email/+page.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/(console)/verify-email/+page.ts b/src/routes/(console)/verify-email/+page.ts index 15ad453bca..d97e736667 100644 --- a/src/routes/(console)/verify-email/+page.ts +++ b/src/routes/(console)/verify-email/+page.ts @@ -39,7 +39,6 @@ export const load: PageLoad = async ({ parent, depends, url }) => { } finally { redirect(303, resolve('/')); } - } else { - redirect(303, resolve('/')); } + return {}; }; From f60a23110ced473e2dd6cf33e3c2430638e592ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Ba=C4=8Do?= Date: Tue, 14 Oct 2025 16:19:11 +0200 Subject: [PATCH 064/300] Disable email veirifaction on prod, for rolling update --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2a19d6fbee..86a16d699c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -41,7 +41,7 @@ jobs: "PUBLIC_CONSOLE_MODE=cloud" "PUBLIC_CONSOLE_FEATURE_FLAGS=" "PUBLIC_APPWRITE_MULTI_REGION=true" - "PUBLIC_CONSOLE_EMAIL_VERIFICATION=true" + "PUBLIC_CONSOLE_EMAIL_VERIFICATION=false" "PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false" "PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}" "PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY }}" From c0479370ae0c10fc4f20a18c7c9ce199343737e9 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:24:46 +0530 Subject: [PATCH 065/300] used typography instead of link --- src/lib/components/permissions/row.svelte | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index f632c269e9..fdab116e76 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -134,9 +134,9 @@ on:mouseleave={() => hidePopover(hide)}> {#if isCustomPermission(role)} - - {formatName(role, $isSmallViewport ? 8 : 15)} - + + {formatName(role, $isSmallViewport ? 8 : 15)} + {:else} From 19cbaa38a8393ff62d4769fc48133e38696b7290 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 15 Oct 2025 12:43:29 +0530 Subject: [PATCH 066/300] svelte 5 migartion --- src/lib/components/permissions/row.svelte | 139 +++++++++++++--------- 1 file changed, 81 insertions(+), 58 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index fdab116e76..4f341450eb 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -1,5 +1,5 @@ - + {#if !isPlatformCreated} diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte index c616650328..0ee698c845 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte @@ -27,13 +27,15 @@ import { PlatformType } from '@appwrite.io/console'; import { app } from '$lib/stores/app'; import { project } from '../../store'; + import { getCorrectTitle, type PlatformProps } from './store'; - export let isPlatformCreated = false; - export let platform: PlatformType = PlatformType.Appleios; + let { isConnectPlatform = false, platform = PlatformType.Appleios }: PlatformProps = $props(); + + let showExitModal = $state(false); + let isCreatingPlatform = $state(false); + let connectionSuccessful = $state(false); + let isPlatformCreated = $state(isConnectPlatform); - let showExitModal = false; - let isCreatingPlatform = false; - let connectionSuccessful = false; const projectId = page.params.project; const gitCloneCode = @@ -104,7 +106,10 @@ APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.proj }); - +
diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte index 11a0b7e6c6..3129249486 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte @@ -26,13 +26,16 @@ import OnboardingPlatformCard from './components/OnboardingPlatformCard.svelte'; import { PlatformType } from '@appwrite.io/console'; import { project } from '../../store'; + import { getCorrectTitle, type PlatformProps } from './store'; - export let isPlatformCreated = false; - export let platform: PlatformType = PlatformType.Flutterandroid; + let { isConnectPlatform = false, platform = PlatformType.Flutterandroid }: PlatformProps = + $props(); + + let showExitModal = $state(false); + let isCreatingPlatform = $state(false); + let connectionSuccessful = $state(false); + let isPlatformCreated = $state(isConnectPlatform); - let showExitModal = false; - let isCreatingPlatform = false; - let connectionSuccessful = false; const projectId = page.params.project; const gitCloneCode = @@ -169,7 +172,10 @@ }); - + diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte index 37b638e145..aeba8a3817 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte @@ -26,13 +26,16 @@ import OnboardingPlatformCard from './components/OnboardingPlatformCard.svelte'; import { PlatformType } from '@appwrite.io/console'; import { project } from '../../store'; + import { getCorrectTitle, type PlatformProps } from './store'; - export let isPlatformCreated = false; - export let platform: PlatformType = PlatformType.Reactnativeandroid; + let { isConnectPlatform = false, platform = PlatformType.Reactnativeandroid }: PlatformProps = + $props(); + + let showExitModal = $state(false); + let isCreatingPlatform = $state(false); + let connectionSuccessful = $state(false); + let isPlatformCreated = $state(isConnectPlatform); - let showExitModal = false; - let isCreatingPlatform = false; - let connectionSuccessful = false; const projectId = page.params.project; const gitCloneCode = @@ -130,7 +133,10 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p }); - + diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 859926e395..cac3b49a55 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -26,7 +26,7 @@ IconJs } from '@appwrite.io/pink-icons-svelte'; import { page } from '$app/state'; - import { type ComponentType, onMount } from 'svelte'; + import { onMount } from 'svelte'; import { sdk } from '$lib/stores/sdk'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { addNotification } from '$lib/stores/notifications'; @@ -46,15 +46,19 @@ } from './components/index'; import { extendedHostnameRegex } from '$lib/helpers/string'; import { project } from '../../store'; + import { type PlatformProps, type FrameworkType, getCorrectTitle } from './store'; - export let key: string; - export let isPlatformCreated = false; - export let platform: PlatformType = PlatformType.Web; + let { + key, + isConnectPlatform = false, + platform = PlatformType.Flutterandroid + }: PlatformProps = $props(); - let showExitModal = false; - let isCreatingPlatform = false; - let connectionSuccessful = false; - let isChangingFramework = false; + let showExitModal = $state(false); + let isCreatingPlatform = $state(false); + let connectionSuccessful = $state(false); + let isChangingFramework = $state(false); + let isPlatformCreated = $state(isConnectPlatform); const projectId = page.params.project; @@ -62,18 +66,9 @@ ${prefix}APPWRITE_PROJECT_NAME = "${$project.name}" ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}" `; - type FrameworkType = { - key: string; - label: string; - icon: ComponentType; - smallIcon: ComponentType; - portNumber: number; - runCommand: string; - updateConfigCode: string; - }; - - let hostname: string; - let hostnameError = false; + + let hostname = $state(null); + let hostnameError = $state(false); let frameworks: Array = [ { @@ -149,8 +144,11 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p } ]; - $: selectedFramework = frameworks.find((framework) => framework.key === key); - $: selectedFrameworkIcon = selectedFramework ? selectedFramework.icon : NoFrameworkIcon; + const selectedFramework = $derived(frameworks.find((framework) => framework.key === key)); + + const selectedFrameworkIcon = $derived( + selectedFramework ? selectedFramework.icon : NoFrameworkIcon + ); async function createWebPlatform() { hostnameError = hostname !== '' ? !new RegExp(extendedHostnameRegex).test(hostname) : null; @@ -213,7 +211,10 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p }); - + {#if !isPlatformCreated || isChangingFramework} @@ -277,6 +278,7 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts new file mode 100644 index 0000000000..e051148b1f --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts @@ -0,0 +1,22 @@ +import type { ComponentType } from 'svelte'; +import { PlatformType } from '@appwrite.io/console'; + +export type PlatformProps = { + key?: string; + platform?: PlatformType; + isConnectPlatform: boolean; +}; + +export type FrameworkType = { + key: string; + label: string; + icon: ComponentType; + smallIcon: ComponentType; + portNumber: number; + runCommand: string; + updateConfigCode: string; +}; + +export function getCorrectTitle(isPlatformCreated: boolean, platform: string) { + return isPlatformCreated ? `Connect your ${platform} app` : `Add ${platform} platform`; +} From 8cdf6ed399e4d59fa613347631698b5fc62dc128 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 16 Oct 2025 16:24:25 +0530 Subject: [PATCH 072/300] fix: platform type. --- .../overview/platforms/createWeb.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index cac3b49a55..5b26248cd9 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -51,7 +51,7 @@ let { key, isConnectPlatform = false, - platform = PlatformType.Flutterandroid + platform = PlatformType.Web }: PlatformProps = $props(); let showExitModal = $state(false); From 274801236b6871ddf1439c6a0a21ddec7f0fb26a Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 16 Oct 2025 16:25:06 +0530 Subject: [PATCH 073/300] fix: param. --- .../project-[region]-[project]/overview/platforms/store.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts index e051148b1f..d0b7956439 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts @@ -17,6 +17,6 @@ export type FrameworkType = { updateConfigCode: string; }; -export function getCorrectTitle(isPlatformCreated: boolean, platform: string) { - return isPlatformCreated ? `Connect your ${platform} app` : `Add ${platform} platform`; +export function getCorrectTitle(isConnectPlatform: boolean, platform: string) { + return isConnectPlatform ? `Connect your ${platform} app` : `Add ${platform} platform`; } From f350ecb5c97e979b0d590e055e3db745815bc5e2 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 16 Oct 2025 16:38:54 +0530 Subject: [PATCH 074/300] lint. --- .../overview/platforms/createWeb.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 5b26248cd9..bebe610d7f 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -48,11 +48,7 @@ import { project } from '../../store'; import { type PlatformProps, type FrameworkType, getCorrectTitle } from './store'; - let { - key, - isConnectPlatform = false, - platform = PlatformType.Web - }: PlatformProps = $props(); + let { key, isConnectPlatform = false, platform = PlatformType.Web }: PlatformProps = $props(); let showExitModal = $state(false); let isCreatingPlatform = $state(false); From 0e042456d58dbceae2ba0df76e0e29d0a8a7aae1 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Thu, 16 Oct 2025 17:33:23 +0530 Subject: [PATCH 075/300] copy prompt --- .../overview/platforms/createAndroid.svelte | 40 +++++++++++++- .../overview/platforms/createApple.svelte | 39 ++++++++++++- .../overview/platforms/createFlutter.svelte | 39 ++++++++++++- .../platforms/createReactNative.svelte | 40 +++++++++++++- .../overview/platforms/createWeb.svelte | 55 ++++++++++++++++++- 5 files changed, 208 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte index e5aba6c424..f6e3d4209f 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte @@ -10,7 +10,8 @@ Typography, Fieldset, InlineCode, - Tooltip + Tooltip, + Alert } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconAndroid, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; @@ -39,6 +40,31 @@ const val APPWRITE_PROJECT_NAME = "${$project.name}" const val APPWRITE_PUBLIC_ENDPOINT = "${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}"`; + const prompt = ` + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal, VSCode or Android Studio. + + \`\`\`bash + ${gitCloneCode} + \`\`\` + + 2. Open the file \`constants/AppwriteConfig.kt\` and update the configuration settings. + + + \`\`\`kotlin + ${configCode} + \`\`\` + + 3. Run the app on a connected device or emulator, then click the \`Send a ping\` button to verify the setup. + `; + + async function copyPrompt() { + await navigator.clipboard.writeText(prompt); + addNotification({ + type: 'success', + message: 'Prompt copied to clipboard' + }); + } + async function createAndroidPlatform() { try { isCreatingPlatform = true; @@ -162,6 +188,18 @@ const val APPWRITE_PUBLIC_ENDPOINT = "${sdk.forProject(page.params.region, page. {#if isPlatformCreated}
+ + + Paste it into your LLM to generate a working setup. + + + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal, VSCode or Android Studio. diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte index d830134974..4b9237df15 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte @@ -11,7 +11,8 @@ Typography, Fieldset, InlineCode, - Tooltip + Tooltip, + Alert } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconApple, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; @@ -41,6 +42,22 @@ APPWRITE_PROJECT_NAME: "${$project.name}" APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}"`; + const prompt = ` + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal or XCode. + + \`\`\`bash + ${gitCloneCode} + \`\`\` + + 2. Update the configuration settings in the file \`Sources/Config.plist\` to reflect the values below: + + \`\`\`plaintext + ${configCode} + \`\`\` + + 3. Run the app on a connected device or simulator, then click the \`Send a ping\` button to verify the setup. + `; + export let platform: PlatformType = PlatformType.Appleios; let platforms: { [key: string]: PlatformType } = { @@ -50,6 +67,14 @@ APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.proj tvOS: PlatformType.Appletvos }; + async function copyPrompt() { + await navigator.clipboard.writeText(prompt); + addNotification({ + type: 'success', + message: 'Prompt copied to clipboard' + }); + } + async function createApplePlatform() { try { isCreatingPlatform = true; @@ -192,6 +217,18 @@ APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.proj {#if isPlatformCreated}
+ + + Paste it into your LLM to generate a working setup. + + + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal or XCode. diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte index ac39899ae6..00f67852d8 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte @@ -11,7 +11,8 @@ Typography, Fieldset, InlineCode, - Tooltip + Tooltip, + Alert } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconFlutter, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; @@ -42,6 +43,22 @@ static const String appwritePublicEndpoint = '${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}'; }`; + const prompt = ` + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal, VSCode or Android Studio. + + \`\`\`bash + ${gitCloneCode} + \`\`\` + + 2. Replace lib/config/environment.dart to reflect the values below: + + \`\`\`dart + ${configCode} + \`\`\` + + 3. Run the app on a connected device or simulator using \`flutter run -d [device_name]\`, then click the \`Send a ping\` button to verify the setup. + `; + export let platform: PlatformType = PlatformType.Flutterandroid; let platforms: { [key: string]: PlatformType } = { @@ -108,6 +125,14 @@ [PlatformType.Flutterwindows]: 'Package name' }; + async function copyPrompt() { + await navigator.clipboard.writeText(prompt); + addNotification({ + type: 'success', + message: 'Prompt copied to clipboard' + }); + } + async function createFlutterPlatform() { try { isCreatingPlatform = true; @@ -273,6 +298,18 @@ {#if isPlatformCreated}
+ + + Paste it into your LLM to generate a working setup. + + + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal, VSCode or Android Studio. diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte index 2853694a1e..23792884ba 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte @@ -11,7 +11,8 @@ Typography, Fieldset, InlineCode, - Tooltip + Tooltip, + Alert } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconReact, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; @@ -40,6 +41,22 @@ EXPO_PUBLIC_APPWRITE_PROJECT_NAME="${$project.name}" EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}`; + const prompt = ` + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal or VSCode. + + \`\`\`bash + ${gitCloneCode} + \`\`\` + + 2. Add your Appwrite credentials to \`.env.example\` then rename it to \`.env\` if needed. + + \`\`\`dotenv + ${updateConfigCode} + \`\`\` + + 3. Run the app on a connected device or simulator using \`npm install\` followed by \`npm run ios\` or \`npm run android\`, then click the \`Send a ping\` button to verify the setup. + `; + export let platform: PlatformType = PlatformType.Reactnativeandroid; let platforms: { [key: string]: PlatformType } = { @@ -76,6 +93,14 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p [PlatformType.Reactnativeios]: 'Bundle ID' }; + async function copyPrompt() { + await navigator.clipboard.writeText(prompt); + addNotification({ + type: 'success', + message: 'Prompt copied to clipboard' + }); + } + async function createReactNativePlatform() { try { isCreatingPlatform = true; @@ -217,6 +242,19 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p {#if isPlatformCreated}
+ + + Paste it into your LLM to generate a working setup. + + + + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal or VSCode. diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 3a16c105f1..0288a657b6 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -11,7 +11,8 @@ Fieldset, InlineCode, Card, - Tooltip + Tooltip, + Alert } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { @@ -151,6 +152,45 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p $: selectedFramework = frameworks.find((framework) => framework.key === selectedFrameworkKey); $: selectedFrameworkIcon = selectedFramework ? selectedFramework.icon : NoFrameworkIcon; + $: prompt = `1. If you're starting a new project, you can clone our starter kit from + GitHub using the terminal or VSCode. + + \`\`\`bash + git clone https://github.com/appwrite/starter-for-${selectedFramework.key} + cd starter-for-${selectedFramework.key} + \`\`\` + + 2. Copy the file \`.env.example\` to \`.env\` and update the configuration settings. + + \`\`\`dotenv + APPWRITE_PROJECT_ID=${projectId} + APPWRITE_PROJECT_NAME=${$project.name} + APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.project).client.config.endpoint} + \`\`\` + + 3. Install project dependencies + + \`\`\`bash + npm install + \`\`\` + + 4. Run the app, then click the \`Send a ping\` button + to verify the setup. + + \`\`\`bash + ${selectedFramework.runCommand} + \`\`\` + + Demo app runs on http://localhost:${selectedFramework.portNumber} + `; + + async function copyPrompt() { + await navigator.clipboard.writeText(prompt); + addNotification({ + type: 'success', + message: 'Prompt copied to clipboard' + }); + } async function createWebPlatform() { hostnameError = hostname !== '' ? !new RegExp(extendedHostnameRegex).test(hostname) : null; @@ -287,6 +327,19 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p {#if isPlatformCreated && !isChangingFramework}
+ + + Paste it into your LLM to generate a working setup. + + + + 1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal or VSCode. From e71d9df1dc066f69f9e88ca87ccb349af81951a4 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 16 Oct 2025 19:30:37 +0530 Subject: [PATCH 076/300] feat: Set mode modeless for sendVerificationEmailModal to allow click-through overlay for password managers --- package.json | 4 ++-- pnpm-lock.yaml | 20 +++++++++---------- .../account/sendVerificationEmailModal.svelte | 3 ++- src/lib/components/modal.svelte | 3 ++- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 4968186968..9270b700b6 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 827befa274..2e61c46952 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/components/account/sendVerificationEmailModal.svelte b/src/lib/components/account/sendVerificationEmailModal.svelte index 1ad53ed1bb..bdb30c4d3f 100644 --- a/src/lib/components/account/sendVerificationEmailModal.svelte +++ b/src/lib/components/account/sendVerificationEmailModal.svelte @@ -135,7 +135,8 @@ title="Verify your email address" {onSubmit} dismissible={false} - autoClose={false}> + autoClose={false} + mode="modeless"> diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 2eb5623366..252bd8a8c1 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -14,6 +14,7 @@ }; export let title = ''; export let hideFooter = false; + export let mode: 'modal' | 'modeless' = 'modal'; let alert: HTMLElement; @@ -29,7 +30,7 @@ - + {#if error}
From 8fece89449727e81ab880d6ad83d6b253bcda0a3 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 16 Oct 2025 19:54:31 +0530 Subject: [PATCH 077/300] use boolean --- package.json | 4 ++-- pnpm-lock.yaml | 20 +++++++++---------- .../account/sendVerificationEmailModal.svelte | 2 +- src/lib/components/modal.svelte | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 9270b700b6..3f1c69a25a 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e61c46952..37bbc0be77 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b93a4a4(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b93a4a4(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/components/account/sendVerificationEmailModal.svelte b/src/lib/components/account/sendVerificationEmailModal.svelte index bdb30c4d3f..0e85bb067a 100644 --- a/src/lib/components/account/sendVerificationEmailModal.svelte +++ b/src/lib/components/account/sendVerificationEmailModal.svelte @@ -136,7 +136,7 @@ {onSubmit} dismissible={false} autoClose={false} - mode="modeless"> + modeless> diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 252bd8a8c1..2e078beca3 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -14,7 +14,7 @@ }; export let title = ''; export let hideFooter = false; - export let mode: 'modal' | 'modeless' = 'modal'; + export let modeless: boolean = false; let alert: HTMLElement; @@ -30,7 +30,7 @@ - + {#if error}
From f5acd169afb72f5c9682a1f0b26c6f44e0c06e4d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 17 Oct 2025 12:18:24 +0530 Subject: [PATCH 078/300] feat: make upload dropzones mobile-friendly --- .../create-function/manual/+page.svelte | 29 +++++++++---------- .../sites/create-site/manual/+page.svelte | 27 ++++++++--------- 2 files changed, 25 insertions(+), 31 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte index 40c38c541e..ca0dd76ecc 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte @@ -185,27 +185,24 @@ on:invalid={handleInvalid}> - - - Drag and drop file here or click to upload - - + + + Drag and drop file here or click to upload  - + justifyContent="center"> + + + Only .tar.gz files allowed + - Only .tar.gz files allowed - + {#if maxSize > 0} - Max file size: {readableMaxSize.value + readableMaxSize.unit} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte index 281b683143..30f306772a 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte @@ -174,24 +174,21 @@ on:invalid={handleInvalid}> - - - Drag and drop file here or click to upload - - + + + Drag and drop file here or click to upload  - + justifyContent="center"> + + + Only .tar.gz files allowed + - Only .tar.gz files allowed - + {#if maxSize > 0} Date: Fri, 17 Oct 2025 12:35:32 +0530 Subject: [PATCH 079/300] make deployment screenshots clickable --- .../sites/(components)/siteCard.svelte | 59 +++++++++++++++---- 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index 95562c0add..e8ac5443e4 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -10,6 +10,7 @@ Icon, Image, Layout, + Link, Status, Tooltip, Typography @@ -23,15 +24,31 @@ import { isCloud } from '$lib/system'; import { sdk } from '$lib/stores/sdk'; import { capitalize } from '$lib/helpers/string'; + import { regionalProtocol } from '$routes/(console)/project-[region]-[project]/store'; - export let deployment: Models.Deployment; - export let proxyRuleList: Models.ProxyRuleList; - export let hideQRCode = false; - export let variant: 'primary' | 'secondary' = 'primary'; + let { + deployment, + proxyRuleList, + hideQRCode = false, + variant = 'primary' + }: { + deployment: Models.Deployment; + proxyRuleList: Models.ProxyRuleList; + hideQRCode?: boolean; + variant?: 'primary' | 'secondary'; + } = $props(); - let show = false; + let show = $state(false); - $: totalSize = humanFileSize(deployment?.totalSize ?? 0); + let totalSize = $derived(humanFileSize(deployment?.totalSize ?? 0)); + + let sortedDomains = $derived( + proxyRuleList?.rules?.slice()?.sort((a, b) => { + if (a?.trigger === 'manual' && b?.trigger !== 'manual') return -1; + if (a?.trigger !== 'manual' && b?.trigger === 'manual') return 1; + return 0; + }) + ); function getScreenshot(theme: string, deployment: Models.Deployment) { if (theme === 'dark') { @@ -59,13 +76,29 @@
- + {#if proxyRuleList?.total} + + + + {:else} + + {/if} From f59f9463d75551503ba674b003055912b8b5cced Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 17 Oct 2025 12:52:09 +0530 Subject: [PATCH 080/300] using plain old anchor instead ofg Link due to height contraints --- .../sites/(components)/siteCard.svelte | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index e8ac5443e4..c2be64c75c 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -10,7 +10,6 @@ Icon, Image, Layout, - Link, Status, Tooltip, Typography @@ -76,21 +75,11 @@
- {#if proxyRuleList?.total} - - - - {:else} + - {/if} + From 7cf6241bd9b1c80cecb2db0884ff4734313a062d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 17 Oct 2025 13:21:16 +0530 Subject: [PATCH 081/300] code rabbit suggestion --- .../sites/(components)/siteCard.svelte | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index c2be64c75c..af189d6ffd 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -48,6 +48,7 @@ return 0; }) ); + let primaryDomain = $derived(sortedDomains?.[0]?.domain); function getScreenshot(theme: string, deployment: Models.Deployment) { if (theme === 'dark') { @@ -75,11 +76,21 @@
- + {#if primaryDomain} + + + + {:else} - + {/if} From 6f530ec701409f1f00cf167ea28db1164ae2a1d1 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 15:27:15 +0530 Subject: [PATCH 082/300] fix: icon on email. --- .../database-[database]/table-[table]/columns/+page.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index adc70ad97f..9681450085 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -40,7 +40,8 @@ IconTrash, IconViewList, IconLockClosed, - IconFingerPrint + IconFingerPrint, + IconMail } from '@appwrite.io/pink-icons-svelte'; import { type ComponentProps, onDestroy, onMount } from 'svelte'; import { Click, trackEvent } from '$lib/actions/analytics'; @@ -125,7 +126,7 @@ const columnFormatIcon = { ip: IconLocationMarker, url: IconLink, - email: IconLink, + email: IconMail, enum: IconViewList }; From 86bd0b8d21fd87a053225f57a3e749f4e643c7f0 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 15:52:22 +0530 Subject: [PATCH 083/300] add: type info. on column. --- .../table-[table]/columns/+page.svelte | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 9681450085..584602aa57 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -249,6 +249,12 @@ minimumWidth: 300, resizable: true }, + { + id: 'type', + width: getColumnWidth('type', 150), + minimumWidth: 150, + resizable: false + }, { id: 'indexed', width: getColumnWidth('indexed', 150), @@ -309,6 +315,7 @@ on:columnsResize={(resize) => saveColumnsWidth(resize.detail)}> Column name + Type Indexed Default value @@ -413,6 +420,10 @@ {/if} + + {@const columnType = column['format'] ? column['format'] : column.type} + {columnType.toLowerCase()} + {@const isActuallyIndexed = $indexes.some((index) => index.columns.includes(column.key) From 031746a203df53acf76ca779a78f11eaa67e321a Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 15:54:39 +0530 Subject: [PATCH 084/300] update: fix min width. --- .../database-[database]/table-[table]/columns/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 584602aa57..4b3b753641 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -251,7 +251,7 @@ }, { id: 'type', - width: getColumnWidth('type', 150), + width: 150, minimumWidth: 150, resizable: false }, From 00b15cd5b072b73a3b2f485e96f3d41851990b72 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 15:21:01 +0530 Subject: [PATCH 085/300] update: design comments. --- .../databases/database-[database]/(suggestions)/empty.svelte | 4 ++-- .../database-[database]/table-[table]/createColumn.svelte | 2 +- .../database-[database]/table-[table]/indexes/+page.svelte | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index aeeb58ead7..40c8e53ce2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1543,7 +1543,7 @@ background: linear-gradient( 180deg, rgba(255, 255, 255, 0) 0%, - rgba(255, 255, 255, 0.86) 32.25%, + rgba(255, 255, 255, 0.86) 85%, /* show more of the bottom area */ #fff 100% ); z-index: 20; /* under overlay */ @@ -1558,7 +1558,7 @@ background: linear-gradient( 180deg, rgba(29, 29, 33, 0) 0%, - rgba(29, 29, 33, 0.86) 21%, + rgba(29, 29, 33, 0.86) 85%, /* show more of the bottom area */ #1d1d21 100% ); } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte index 5d6e3ee554..9b54eeb0a3 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte @@ -38,7 +38,7 @@ const databaseId = page.params.database; // flow isn't complete yet! - const isSuggestionsFeatureEnabled = false; + const isSuggestionsFeatureEnabled = true; let key: string = $state(column?.key ?? null); let data: Partial = $state({ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index 2db12152fd..a425ed44a1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -293,7 +293,7 @@ {#snippet subtitle()} - Create indexes to improve query and sorting performance. Learn more in the + Need a hand? Learn more in the From 2f6346f931b485cd71beb7b0c277b4d1206698a8 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 16:57:09 +0530 Subject: [PATCH 086/300] feat: undo delete. --- .../(suggestions)/empty.svelte | 141 ++++++++++++++---- 1 file changed, 115 insertions(+), 26 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 40c8e53ce2..3b0178eac4 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -61,11 +61,18 @@ let creatingColumns = $state(false); let selectedColumnId = $state(null); - let selectedColumnName = $state(null); let previousColumnId = $state(null); + let selectedColumnName = $state(null); + + // for deleting a column + undo + let undoTimer: ReturnType | null = $state(null); + let columnBeingDeleted: (SuggestedColumnSchema & { deletedIndex?: number }) | null = + $state(null); + const baseColProps = { draggable: false, resizable: false }; const NOTIFICATION_AND_MOCK_DELAY = 1250; + const COLUMN_DELETION_UNDO_TIMER_LIMIT = 10000; // 10 seconds const getColumnWidth = (columnKey: string) => Math.max(180, columnKey.length * 8 + 60); const safeNumericValue = (value: number | undefined) => @@ -662,12 +669,37 @@ function deleteColumn(columnId: string) { if (!columnId) return; - // remove the selected column from customColumns - const columnIndex = customColumns.findIndex((col) => col.key === columnId); + let columnIndex = -1; + let columnSchema: SuggestedColumnSchema; + + for (let index = 0; index < customColumns.length; index++) { + if (customColumns[index].key === columnId) { + columnIndex = index; + columnSchema = customColumns[index]; + break; + } + } + if (columnIndex !== -1) { - customColumns = customColumns.filter((_, index) => index !== columnIndex); + customColumns.splice(columnIndex, 1); + } + + // store column with its index for undo + columnBeingDeleted = { ...columnSchema, deletedIndex: columnIndex }; + + // clear any existing timer + if (undoTimer) { + clearTimeout(undoTimer); } + // start 10-second undo timer + undoTimer = setTimeout(() => { + undoTimer = null; + selectedColumnId = null; + columnBeingDeleted = null; + selectedColumnName = null; + }, COLUMN_DELETION_UNDO_TIMER_LIMIT); + // reset selection! resetSelectedColumn(); @@ -678,6 +710,39 @@ requestAnimationFrame(() => recalcAll()); } + function undoDelete() { + if (!columnBeingDeleted) return; + + const { deletedIndex, ...columnData } = columnBeingDeleted; + + // restore column at its original index + if (deletedIndex !== undefined && deletedIndex >= 0) { + customColumns.splice(deletedIndex, 0, columnData); + } else { + // fallback: add at the end if index is missing + customColumns.push(columnData); + } + + // clear undo state + columnBeingDeleted = null; + + // clear timer + if (undoTimer) { + clearTimeout(undoTimer); + undoTimer = null; + } + + // recalculate view after restore + requestAnimationFrame(() => { + recalcAll(); + + tick().then(() => { + selectedColumnId = columnData.key; + selectedColumnName = columnData.key; + }) + }); + } + function showIndexSuggestionsNotification() { // safeguard anyways! if (!isCloud) return; @@ -864,11 +929,9 @@ } else { selectedColumnId = columnId; } - } - $effect(() => { - console.log('selectedColumnId changed:', selectedColumnId); - }); + columnBeingDeleted = null; + } $effect(() => { if (!spreadsheetContainer) return; @@ -1185,33 +1248,59 @@
{:else if customColumns.some((col) => !col.isPlaceholder) && showFloatingBar} - -
+ + {@const isUndoDeleteMode = columnBeingDeleted && columnBeingDeleted?.key !== null} + {@const columnName = isUndoDeleteMode ? columnBeingDeleted?.key : selectedColumnName} + + {@const hasSelection = selectedColumnId !== null || isUndoDeleteMode} +
- - column selected + + + {#if isUndoDeleteMode} + was deleted. You can undo this action. + {:else} + column selected + {/if} - (selectedColumnId = null)}> - Cancel - + {#if !isUndoDeleteMode} + (selectedColumnId = null)}> + Cancel + + {/if} !col.isPlaceholder).length <= 1} - on:click={() => deleteColumn(selectedColumnName)}> - Delete + disabled={!isUndoDeleteMode && + customColumns.filter((col) => !col.isPlaceholder).length <= 1} + on:click={() => { + if (isUndoDeleteMode) { + undoDelete(); + } else { + deleteColumn(selectedColumnName); + } + }}> + {#if isUndoDeleteMode} + Undo + {:else} + Delete + {/if} @@ -1223,7 +1312,7 @@ class="floating-action-wrapper" class:expanded={!creatingColumns} class:creating-columns={creatingColumns} - class:has-selection={selectedColumnId !== null}> + class:has-selection={hasSelection}> @@ -1543,8 +1632,8 @@ background: linear-gradient( 180deg, rgba(255, 255, 255, 0) 0%, - rgba(255, 255, 255, 0.86) 85%, /* show more of the bottom area */ - #fff 100% + rgba(255, 255, 255, 0.86) 85%, + /* show more of the bottom area */ #fff 100% ); z-index: 20; /* under overlay */ display: flex; @@ -1558,8 +1647,8 @@ background: linear-gradient( 180deg, rgba(29, 29, 33, 0) 0%, - rgba(29, 29, 33, 0.86) 85%, /* show more of the bottom area */ - #1d1d21 100% + rgba(29, 29, 33, 0.86) 85%, + /* show more of the bottom area */ #1d1d21 100% ); } From f3457e67317e23180a98c894baa11b87aeda5bc7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 17:00:36 +0530 Subject: [PATCH 087/300] fix: expanded fab shown when creating columns. --- .../(suggestions)/empty.svelte | 100 +++++++++--------- 1 file changed, 51 insertions(+), 49 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 3b0178eac4..4d65ea8c6c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1251,61 +1251,63 @@ {@const isUndoDeleteMode = columnBeingDeleted && columnBeingDeleted?.key !== null} {@const columnName = isUndoDeleteMode ? columnBeingDeleted?.key : selectedColumnName} - {@const hasSelection = selectedColumnId !== null || isUndoDeleteMode} -
- - - - - - {#if isUndoDeleteMode} - was deleted. You can undo this action. - {:else} - column selected - {/if} - - - - - {#if !isUndoDeleteMode} - + + + + (selectedColumnId = null)}> - Cancel - - {/if} - !col.isPlaceholder).length <= 1} - on:click={() => { - if (isUndoDeleteMode) { - undoDelete(); - } else { - deleteColumn(selectedColumnName); - } - }}> + variant="secondary" + content={columnName} + type={isUndoDeleteMode ? 'error' : undefined} /> + {#if isUndoDeleteMode} - Undo + was deleted. You can undo this action. {:else} - Delete + column selected {/if} - - - - -
+ +
+ + + + {#if !isUndoDeleteMode} + (selectedColumnId = null)}> + Cancel + + {/if} + !col.isPlaceholder).length <= 1} + on:click={() => { + if (isUndoDeleteMode) { + undoDelete(); + } else { + deleteColumn(selectedColumnName); + } + }}> + {#if isUndoDeleteMode} + Undo + {:else} + Delete + {/if} + + + +
+
+ {/if}
Date: Sun, 19 Oct 2025 19:05:07 +0530 Subject: [PATCH 088/300] feat: column suggestions modal. --- package.json | 4 +- pnpm-lock.yaml | 20 ++-- .../(suggestions)/columns.svelte | 62 +++++++++++++ .../(suggestions)/empty.svelte | 14 ++- .../(suggestions)/input.svelte | 12 ++- .../(suggestions)/store.ts | 3 + .../table-[table]/+layout.svelte | 9 +- .../table-[table]/+page.svelte | 12 ++- .../table-[table]/createColumn.svelte | 93 ++++++++----------- .../table-[table]/indexes/+page.svelte | 6 +- 10 files changed, 156 insertions(+), 79 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte diff --git a/package.json b/package.json index fa064b99f6..1cf4a182aa 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 75e232a56c..38cad3b40c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@754a996(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@6faeea0(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@754a996(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@6faeea0(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte new file mode 100644 index 0000000000..9cbea3a2aa --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte @@ -0,0 +1,62 @@ + + + + + + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 4d65ea8c6c..8e9fa2dfeb 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -43,6 +43,12 @@ import IconAINotification from './icon/aiNotification.svelte'; + let { + userColumns = [] + }: { + userColumns?: Column[]; + } = $props(); + let resizeObserver: ResizeObserver; let spreadsheetContainer: HTMLElement; @@ -394,6 +400,7 @@ ...baseColProps }, ...finalCustomColumns, + /*...userColumns,*/ { id: 'actions', title: '', @@ -409,6 +416,8 @@ const emptyCells = $derived(($isSmallViewport ? 14 : 17) + (!$expandTabs ? 2 : 0)); onMount(async () => { + userColumns; /* silences lint check, variable not read */ + if (spreadsheetContainer) { resizeObserver = new ResizeObserver(recalcAll); resizeObserver.observe(spreadsheetContainer); @@ -430,6 +439,7 @@ $tableColumnSuggestions.enabled = false; } + $tableColumnSuggestions.force = undefined; $tableColumnSuggestions.context = null; $tableColumnSuggestions.thinking = false; @@ -739,7 +749,7 @@ tick().then(() => { selectedColumnId = columnData.key; selectedColumnName = columnData.key; - }) + }); }); } @@ -888,6 +898,8 @@ timeout: NOTIFICATION_AND_MOCK_DELAY }); + resetSuggestionsStore(true); + // show index notification! showIndexSuggestionsNotification(); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte index 31272972cf..f389a56c63 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte @@ -7,6 +7,12 @@ import { Button, InputTextarea } from '$lib/elements/forms'; import { Card, Layout, Selector, Typography } from '@appwrite.io/pink-svelte'; + const { + isModal = false + }: { + isModal?: boolean; + } = $props(); + onMount(() => { if (featureActive) { $tableColumnSuggestions.enabled = true; @@ -23,7 +29,9 @@ const subtitle = $derived.by(() => { return featureActive - ? 'Enable AI to suggest useful columns based on your table name' + ? isModal + ? 'Use AI to suggest useful columns' + : 'Enable AI to suggest useful columns based on your table name' : 'Sign up for Cloud to generate columns based on your table name'; }); @@ -42,7 +50,7 @@ - {#if featureActive} + {#if featureActive && !isModal}
({ export const showIndexesSuggestions = writable(false); +export const showColumnsSuggestionsModal = writable(false); + export const mockSuggestions: { total: number; columns: ColumnInput[] } = { total: 7, columns: [ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index 19aa513a5f..a341b5ac4d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -65,7 +65,12 @@ import { Submit, trackEvent } from '$lib/actions/analytics'; import IndexesSuggestions from '../(suggestions)/indexes.svelte'; - import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)'; + import ColumnsSuggestions from '../(suggestions)/columns.svelte'; + import { + showColumnsSuggestionsModal, + showIndexesSuggestions, + tableColumnSuggestions + } from '../(suggestions)'; let editRow: EditRow; let editRelatedRow: EditRelatedRow; @@ -482,4 +487,6 @@ + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 45e3d7f3fe..e86e540099 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -38,7 +38,11 @@ import CreateRow from './rows/create.svelte'; import { onDestroy } from 'svelte'; import { isCloud } from '$lib/system'; - import { Empty as SuggestionsEmptySheet, tableColumnSuggestions } from '../(suggestions)'; + import { + Empty as SuggestionsEmptySheet, + tableColumnSuggestions, + showColumnsSuggestionsModal + } from '../(suggestions)'; import EmptySheetCards from './layout/emptySheetCards.svelte'; import IconAI from '../(suggestions)/icon/aiForButton.svelte'; @@ -201,7 +205,7 @@
- {#if hasColumns && hasValidColumns} + {#if hasColumns && hasValidColumns && $tableColumnSuggestions.force === false} {#if data.rows.total} @@ -250,7 +254,7 @@ {/if} {:else if isCloud && canShowSuggestionsSheet} - + {:else} {#snippet actions()} @@ -267,7 +271,7 @@ title="Suggest columns" subtitle="Use AI to generate columns" onClick={() => { - // todo: add a modal and show input, no toggle. + $showColumnsSuggestionsModal = true; }} /> import { page } from '$app/state'; - import { type Columns, type ColumnDirection } from './store'; - import { goto, invalidate } from '$app/navigation'; + import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; - import { Layout } from '@appwrite.io/pink-svelte'; + import { Alert, Layout, Link } from '@appwrite.io/pink-svelte'; import { InputSelect, InputText } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; @@ -11,8 +10,10 @@ import type { Column } from '$lib/helpers/types'; import { preferences } from '$lib/stores/preferences'; import { onMount } from 'svelte'; - import { resolve } from '$app/paths'; - import { Input as SuggestionsInput, tableColumnSuggestions } from '../(suggestions)/index'; + + import { showColumnsSuggestionsModal } from '../(suggestions)/store'; + import IconAINotification from '../(suggestions)/icon/aiNotification.svelte'; + import { type Columns, type ColumnDirection, showCreateColumnSheet } from './store'; let { direction = null, @@ -52,16 +53,6 @@ columnOptions.find((option) => option.name === selectedOption).component ); - function initSuggestionsStore() { - if (!isSuggestionsFeatureEnabled) return; - - $tableColumnSuggestions.table = null; - $tableColumnSuggestions.enabled = false; - - $tableColumnSuggestions.context = null; - $tableColumnSuggestions.thinking = false; - } - function init() { key = null; $option = null; @@ -74,9 +65,6 @@ /* default to string */ selectedOption = 'String'; $option = columnOptions[0]; - - /* init suggestions */ - initSuggestionsStore(); } function insertColumnInOrder() { @@ -155,33 +143,6 @@ } export async function submit() { - if (isSuggestionsEnabled) { - const tableInUse = page.data.table; - // TODO: confirm what flow to use! - tableColumnSuggestions.update((store) => ({ - ...store, - thinking: true, - table: { - id: tableInUse.$id, - name: tableInUse.name - } - })); - - const { region, project, database, table } = page.params; - await goto( - resolve( - '/(console)/project-[region]-[project]/databases/database-[database]/table-[table]', - { - region, - project, - database, - table - } - ) - ); - return true; - } - try { await $option.create(databaseId, tableId, key, data); @@ -222,15 +183,23 @@ $option = columnOptions.find((option) => option.name === selectedOption); } }); - - const isSuggestionsEnabled = $derived( - isSuggestionsFeatureEnabled && $tableColumnSuggestions.enabled - ); {#if isSuggestionsFeatureEnabled} - +
+ + + + + + Need help? Let AI { + $showCreateColumnSheet.show = false; + $showColumnsSuggestionsModal = true; + }}>suggest columns based on your data + +
{/if} @@ -240,7 +209,7 @@ placeholder="Enter key" bind:value={key} autofocus - disabled={selectedOption === 'Relationship' || isSuggestionsEnabled} + disabled={selectedOption === 'Relationship'} required pattern="^[A-Za-z0-9][A-Za-z0-9._\-]*$" /> @@ -248,7 +217,6 @@ id="type" label="Type" bind:value={selectedOption} - disabled={isSuggestionsEnabled} options={columnOptions.map((attr) => { return { label: attr.name, @@ -260,9 +228,22 @@ {#if selectedOption} - ($option = null)} /> + ($option = null)} /> {/if}
+ + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index a425ed44a1..665b016d9b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -37,9 +37,9 @@ import { showCreateColumnSheet } from '../store'; import { isSmallViewport } from '$lib/stores/viewport'; import { page } from '$app/state'; - import { showIndexesSuggestions } from '../../(suggestions)'; + import { showIndexesSuggestions, showColumnsSuggestionsModal } from '../../(suggestions)'; import IconAI from '../../(suggestions)/icon/aiForButton.svelte'; - import EmptySheetCards from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/layout/emptySheetCards.svelte'; + import EmptySheetCards from '../layout/emptySheetCards.svelte'; let { data @@ -339,7 +339,7 @@ title="Suggest columns" subtitle="Use AI to generate columns" onClick={() => { - // TODO: add a modal and show input, no toggle. + $showColumnsSuggestionsModal = true; }} /> {/snippet}
From 1c8191f5c7e9a37dd203134b73c72bb6cd759992 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:07:33 +0530 Subject: [PATCH 089/300] update: index suggestions empty state. --- .../table-[table]/indexes/+page.svelte | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index 665b016d9b..8575711d67 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -290,7 +290,7 @@ {:else} - + {#snippet subtitle()} Need a hand? Learn more in the @@ -304,21 +304,21 @@ {#snippet actions()} { showIndexesSuggestions.update(() => true); }} /> { - showIndexesSuggestions.update(() => true); + showCreateIndex = true; }} /> {/snippet} From 292829d59c234977d95198a82188e08e7b304fa5 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:08:36 +0530 Subject: [PATCH 090/300] fix: permissions check on empty state options --- .../database-[database]/table-[table]/indexes/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index 8575711d67..b8752153a9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -290,7 +290,7 @@ {:else} - + {#snippet subtitle()} Need a hand? Learn more in the From 09c6242bcc27eeb5247f37ce35c061d1fedd6998 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:20:58 +0530 Subject: [PATCH 091/300] fix: view disappearing on columns gen modal > thinking sheet. update: actions on indexes empty state. --- .../database-[database]/(suggestions)/columns.svelte | 2 +- .../databases/database-[database]/(suggestions)/empty.svelte | 2 +- .../databases/database-[database]/(suggestions)/store.ts | 5 +++-- .../databases/database-[database]/table-[table]/+page.svelte | 2 +- .../database-[database]/table-[table]/indexes/+page.svelte | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte index 9cbea3a2aa..5673d8745e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte @@ -22,9 +22,9 @@ $tableColumnSuggestions.table = null; $tableColumnSuggestions.context = null; + $tableColumnSuggestions.force = false; $tableColumnSuggestions.enabled = false; $tableColumnSuggestions.thinking = false; - $tableColumnSuggestions.force = undefined; } async function triggerColumnSuggestions() { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 8e9fa2dfeb..9cc05b3048 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -436,10 +436,10 @@ // these are referenced in // `table-[table]/+page.svelte` $tableColumnSuggestions.table = null; + $tableColumnSuggestions.force = false; $tableColumnSuggestions.enabled = false; } - $tableColumnSuggestions.force = undefined; $tableColumnSuggestions.context = null; $tableColumnSuggestions.thinking = false; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts index 88b9143098..f05b5ca5dd 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts @@ -3,7 +3,7 @@ import { IndexType } from '@appwrite.io/console'; import { columnOptions } from '../table-[table]/columns/store'; export type TableColumnSuggestions = { - force?: boolean; + force: boolean; enabled: boolean; thinking: boolean; context?: string | undefined; @@ -44,7 +44,8 @@ export const tableColumnSuggestions = writable({ enabled: false, context: null, thinking: false, - table: null + table: null, + force: false, }); export const showIndexesSuggestions = writable(false); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index e86e540099..1cce612e1a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -205,7 +205,7 @@
- {#if hasColumns && hasValidColumns && $tableColumnSuggestions.force === false} + {#if hasColumns && hasValidColumns && !$tableColumnSuggestions.force} {#if data.rows.total} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index b8752153a9..b8e9738bd6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -324,7 +324,7 @@ {/if} {:else} - + {#snippet actions()} Date: Sun, 19 Oct 2025 19:28:25 +0530 Subject: [PATCH 092/300] address comments from coderabbit. --- .../database-[database]/(suggestions)/empty.svelte | 9 ++++++--- .../databases/database-[database]/(suggestions)/store.ts | 2 +- .../database-[database]/table-[table]/+page.svelte | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 9cc05b3048..9adb2b2d09 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -680,7 +680,7 @@ if (!columnId) return; let columnIndex = -1; - let columnSchema: SuggestedColumnSchema; + let columnSchema: SuggestedColumnSchema = null; for (let index = 0; index < customColumns.length; index++) { if (customColumns[index].key === columnId) { @@ -690,10 +690,13 @@ } } - if (columnIndex !== -1) { - customColumns.splice(columnIndex, 1); + if (columnIndex === -1 || !columnSchema) { + return; } + // remove the column + customColumns.splice(columnIndex, 1); + // store column with its index for undo columnBeingDeleted = { ...columnSchema, deletedIndex: columnIndex }; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts index f05b5ca5dd..a37d84a917 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts @@ -45,7 +45,7 @@ export const tableColumnSuggestions = writable({ context: null, thinking: false, table: null, - force: false, + force: false }); export const showIndexesSuggestions = writable(false); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 1cce612e1a..e440d2eb31 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -205,7 +205,7 @@
- {#if hasColumns && hasValidColumns && !$tableColumnSuggestions.force} + {#if hasColumns && hasValidColumns && $tableColumnSuggestions.force !== true} {#if data.rows.total} @@ -266,6 +266,7 @@ $showCreateColumnSheet.show = true; }} /> + Date: Sun, 19 Oct 2025 19:35:07 +0530 Subject: [PATCH 093/300] update: empty states on indexes for self-hosted. --- .../table-[table]/indexes/+page.svelte | 81 +++++++++++++------ 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index b8e9738bd6..24467f354c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -23,6 +23,7 @@ Typography } from '@appwrite.io/pink-svelte'; import { + IconBookOpen, IconDotsHorizontal, IconEye, IconPlus, @@ -40,6 +41,7 @@ import { showIndexesSuggestions, showColumnsSuggestionsModal } from '../../(suggestions)'; import IconAI from '../../(suggestions)/icon/aiForButton.svelte'; import EmptySheetCards from '../layout/emptySheetCards.svelte'; + import { isCloud } from '$lib/system'; let { data @@ -292,25 +294,29 @@ {:else} {#snippet subtitle()} - - Need a hand? Learn more in the - - docs. - - + {#if isCloud} + + Need a hand? Learn more in the + + docs. + + + {/if} {/snippet} {#snippet actions()} - { - showIndexesSuggestions.update(() => true); - }} /> + {#if isCloud} + { + showIndexesSuggestions.update(() => true); + }} /> + {/if} { showCreateIndex = true; }} /> + + {#if !isCloud} + + {/if} {/snippet} {/if} {:else} + {#snippet subtitle()} + {#if isCloud} + + Need a hand? Learn more in the + + docs. + + + {/if} + {/snippet} + {#snippet actions()} - { - $showColumnsSuggestionsModal = true; - }} /> + {#if isCloud} + { + $showColumnsSuggestionsModal = true; + }} /> + {:else} + + {/if} {/snippet} {/if} From b2fb9dd57246d11a31090fd0b78a77a3f57f9d38 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:41:01 +0530 Subject: [PATCH 094/300] update: empty states on rows for self-hosted. --- .../table-[table]/+page.svelte | 47 +++++++++++++------ .../table-[table]/indexes/+page.svelte | 4 +- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index e440d2eb31..63089d7f33 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -6,7 +6,7 @@ import { Container } from '$lib/layout'; import { preferences } from '$lib/stores/preferences'; import { canWriteTables, canWriteRows } from '$lib/stores/roles'; - import { Icon, Layout, Divider, Tooltip } from '@appwrite.io/pink-svelte'; + import { Icon, Layout, Divider, Tooltip, Typography, Link } from '@appwrite.io/pink-svelte'; import type { PageData } from './$types'; import { table, @@ -257,6 +257,20 @@ {:else} + {#snippet subtitle()} + {#if !isCloud} + + + Need a hand? Learn more in the + + docs. + + + {/if} + {/snippet} + {#snippet actions()} - - { - $showColumnsSuggestionsModal = true; - }} /> + {#if isCloud} + + { + $showColumnsSuggestionsModal = true; + }} /> + {/if} - + {#if isCloud} + + + {/if} {/snippet} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte index 24467f354c..11a89554e8 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/indexes/+page.svelte @@ -331,7 +331,7 @@ {/if} {/snippet} @@ -373,7 +373,7 @@ {/if} {/snippet} From cc795fa561d9c369fafd92a1863d56179573d3a6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:46:11 +0530 Subject: [PATCH 095/300] update: hide ai suggestion inline alert if not cloud, for now. --- .../database-[database]/table-[table]/createColumn.svelte | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte index 1285e35857..97f06e128d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte @@ -14,6 +14,7 @@ import { showColumnsSuggestionsModal } from '../(suggestions)/store'; import IconAINotification from '../(suggestions)/icon/aiNotification.svelte'; import { type Columns, type ColumnDirection, showCreateColumnSheet } from './store'; + import { isCloud } from '$lib/system'; let { direction = null, @@ -38,9 +39,6 @@ const tableId = page.params.table; const databaseId = page.params.database; - // flow isn't complete yet! - const isSuggestionsFeatureEnabled = true; - let key: string = $state(column?.key ?? null); let data: Partial = $state({ required: column?.required ?? false, @@ -186,7 +184,7 @@ - {#if isSuggestionsFeatureEnabled} + {#if isCloud}
From 5380a6aece3c8cd33b35114977ec26751f2ee454 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:47:22 +0530 Subject: [PATCH 096/300] fix: column id for deletion. --- .../databases/database-[database]/(suggestions)/empty.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 9adb2b2d09..e02979d30f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1309,7 +1309,7 @@ if (isUndoDeleteMode) { undoDelete(); } else { - deleteColumn(selectedColumnName); + deleteColumn(selectedColumnId); } }}> {#if isUndoDeleteMode} From ef556801881fd00ee7cb8029abaa42d67b29af35 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 19:57:48 +0530 Subject: [PATCH 097/300] fix: show `-` for default values if column is a required type! --- .../table-[table]/columns/+page.svelte | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 4b3b753641..467f427d24 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -446,15 +446,18 @@ }} /> - {@const _default = - column?.default !== null && column?.default !== undefined - ? column?.default - : null} + {@const _default = column.required + ? '-' + : column?.default !== null && column?.default !== undefined + ? column?.default + : null} {#if _default === null} + {:else if isSpatialType(column)} + {JSON.stringify(_default)} {:else} - {isSpatialType(column) ? JSON.stringify(_default) : _default} + {_default} {/if} From d8cd72ca0b8c0f969b6d74027613fda3eb99ec51 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 20 Oct 2025 12:31:06 +0530 Subject: [PATCH 098/300] ci: empty commit From 86c7c8e9d56bd806246c937f9192bf68b98611db Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:47:56 +0530 Subject: [PATCH 099/300] Adjust formatting based on viewport size --- src/lib/components/permissions/row.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 4f341450eb..b5d454b149 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -169,7 +169,7 @@ {:then data} {formatName( data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 5 : 7 + $isSmallViewport ? 5 : 8 )} {/await} From a4a09c83158495ded48bc4215f20a89c6fd98da1 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 20 Oct 2025 12:48:27 +0530 Subject: [PATCH 100/300] Update row.svelte --- src/lib/components/permissions/row.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index b5d454b149..4f341450eb 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -169,7 +169,7 @@ {:then data} {formatName( data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 5 : 8 + $isSmallViewport ? 5 : 7 )} {/await} From aa9f918f106672aa642d8ce4162c2b94cae5c6ba Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 20 Oct 2025 15:47:03 +0530 Subject: [PATCH 101/300] use backdrop --- package.json | 4 ++-- pnpm-lock.yaml | 20 +++++++++---------- .../account/sendVerificationEmailModal.svelte | 2 +- src/lib/components/modal.svelte | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 3f1c69a25a..c6a6547fd3 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37bbc0be77..2b4805d82e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f95ebba(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f95ebba(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/components/account/sendVerificationEmailModal.svelte b/src/lib/components/account/sendVerificationEmailModal.svelte index 0e85bb067a..1385570f8e 100644 --- a/src/lib/components/account/sendVerificationEmailModal.svelte +++ b/src/lib/components/account/sendVerificationEmailModal.svelte @@ -136,7 +136,7 @@ {onSubmit} dismissible={false} autoClose={false} - modeless> + backdrop={false}> diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 2e078beca3..8181338f81 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -14,7 +14,7 @@ }; export let title = ''; export let hideFooter = false; - export let modeless: boolean = false; + export let backdrop: boolean = true; let alert: HTMLElement; @@ -30,7 +30,7 @@ - + {#if error}
From f4647217bdb3443cfb66f540f339d568cad6d72f Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Tue, 21 Oct 2025 11:17:03 +0530 Subject: [PATCH 102/300] add using --- .../overview/platforms/createFlutter.svelte | 3 +-- .../overview/platforms/createWeb.svelte | 3 ++- .../overview/platforms/store.ts | 19 +++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte index 8cfd79cab4..a86f087a37 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte @@ -11,8 +11,7 @@ Typography, Fieldset, InlineCode, - Tooltip, - Alert + Tooltip } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconFlutter, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index e05af4c81e..3e7f656ade 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -164,7 +164,8 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p ? `APPWRITE_PROJECT_ID=${projectId}\nAPPWRITE_PROJECT_NAME=${$project.name}\nAPPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.project).client.config.endpoint}` : selectedFramework?.updateConfigCode || '', configLanguage: selectedFramework?.key === 'angular' ? 'ts' : 'dotenv', - runInstructions: `${selectedFramework?.key === 'angular' ? 'Replace the file with the configuration above' : 'Copy the file `.env.example` to `.env` and update the configuration settings'}. Install project dependencies using \`npm install\`, then run the app using \`${selectedFramework?.runCommand}\`. Demo app runs on http://localhost:${selectedFramework?.portNumber}. Click the \`Send a ping\` button to verify the setup.` + runInstructions: `${selectedFramework?.key === 'angular' ? 'Replace the file with the configuration above' : 'Copy the file `.env.example` to `.env` and update the configuration settings'}. Install project dependencies using \`npm install\`, then run the app using \`${selectedFramework?.runCommand}\`. Demo app runs on http://localhost:${selectedFramework?.portNumber}. Click the \`Send a ping\` button to verify the setup.`, + using: 'the terminal or VSCode' }); async function createWebPlatform() { diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts index 233a97da4d..11a2fa5c74 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/store.ts @@ -24,6 +24,7 @@ export type LLMPromptConfig = { configCode: string; configLanguage: string; runInstructions: string; + using: string; }; export function getCorrectTitle(isConnectPlatform: boolean, platform: string) { @@ -31,7 +32,7 @@ export function getCorrectTitle(isConnectPlatform: boolean, platform: string) { } export function generatePromptFromConfig(config: LLMPromptConfig): string { - return `1. If you're starting a new project, you can clone our starter kit from GitHub using the terminal, VSCode or Android Studio. + return `1. If you're starting a new project, you can clone our starter kit from GitHub using ${config.using || 'the terminal'}. \`\`\`bash ${config.cloneCommand} @@ -53,6 +54,7 @@ type PlatformConfig = { configFile: string; configLanguage: string; runInstructions: string; + using: string; }; const platformConfigs: Record = { @@ -63,7 +65,8 @@ const platformConfigs: Record = { configFile: 'constants/AppwriteConfig.kt', configLanguage: 'kotlin', runInstructions: - 'Run the app on a connected device or emulator, then click the `Send a ping` button to verify the setup.' + 'Run the app on a connected device or emulator, then click the `Send a ping` button to verify the setup.', + using: 'the terminal, VSCode or Android Studio' }, apple: { name: 'Apple platforms', @@ -72,7 +75,8 @@ const platformConfigs: Record = { configFile: 'Sources/Config.plist', configLanguage: 'plaintext', runInstructions: - 'Run the app on a connected device or simulator, then click the `Send a ping` button to verify the setup.' + 'Run the app on a connected device or simulator, then click the `Send a ping` button to verify the setup.', + using: 'the terminal or XCode' }, flutter: { name: 'Flutter', @@ -81,7 +85,8 @@ const platformConfigs: Record = { configFile: 'lib/config/environment.dart', configLanguage: 'dart', runInstructions: - 'Run the app on a connected device or simulator using `flutter run -d [device_name]`, then click the `Send a ping` button to verify the setup.' + 'Run the app on a connected device or simulator using `flutter run -d [device_name]`, then click the `Send a ping` button to verify the setup.', + using: 'the terminal' }, reactnative: { name: 'React Native', @@ -90,7 +95,8 @@ const platformConfigs: Record = { configFile: '.env.example', configLanguage: 'dotenv', runInstructions: - 'Add your Appwrite credentials to `.env.example` then rename it to `.env` if needed. Run the app on a connected device or simulator using `npm install` followed by `npm run ios` or `npm run android`, then click the `Send a ping` button to verify the setup.' + 'Add your Appwrite credentials to `.env.example` then rename it to `.env` if needed. Run the app on a connected device or simulator using `npm install` followed by `npm run ios` or `npm run android`, then click the `Send a ping` button to verify the setup.', + using: 'the terminal or VSCode' } }; @@ -106,6 +112,7 @@ export function buildPlatformConfig(platformKey: string, configCode: string): LL configFile: config.configFile, configCode: configCode, configLanguage: config.configLanguage, - runInstructions: config.runInstructions + runInstructions: config.runInstructions, + using: config.using }; } From 6700f994ce792d20cb1b74b4106e3e94a77f2f69 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Tue, 21 Oct 2025 11:20:25 +0530 Subject: [PATCH 103/300] lint --- .../overview/platforms/createApple.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte index 319c70fc0c..7eb9f346a6 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte @@ -11,8 +11,7 @@ Typography, Fieldset, InlineCode, - Tooltip, - Alert + Tooltip } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { IconApple, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; From 26d1bf31658f7d7e8180f978558d99519fb7f731 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Tue, 21 Oct 2025 11:27:41 +0530 Subject: [PATCH 104/300] add analytics for copy prompt --- src/lib/actions/analytics.ts | 3 ++- .../overview/platforms/llmBanner.svelte | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index b511e59c8d..44cd6ec680 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -195,7 +195,8 @@ export enum Click { VariablesCreateClick = 'click_variable_create', VariablesUpdateClick = 'click_variable_update', VariablesImportClick = 'click_variable_import', - WebsiteOpenClick = 'click_open_website' + WebsiteOpenClick = 'click_open_website', + CopyPromptStarterKitClick = 'click_copy_prompt_starter_kit' } export enum Submit { diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte index caf7156ac3..dc207f4bc6 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte @@ -4,6 +4,7 @@ import { Alert, Typography } from '@appwrite.io/pink-svelte'; import { addNotification } from '$lib/stores/notifications'; import { buildPlatformConfig, generatePromptFromConfig, type LLMPromptConfig } from './store'; + import { Click, trackEvent } from '$lib/actions/analytics'; let { platform, @@ -26,6 +27,10 @@ async function copyPrompt() { await copy(prompt); + trackEvent(Click.CopyPromptStarterKitClick, { + platform: config.title + }); + addNotification({ type: 'success', message: 'Prompt copied to clipboard' From 2ff2a68842fe58cabb093215772f8b9065017ff2 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 21 Oct 2025 12:22:49 +0530 Subject: [PATCH 105/300] merged packages --- package.json | 4 ++-- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index c6a6547fd3..9fa20b9dc0 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@636ed39", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b4805d82e..26d4c94dde 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@3e84c1c(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@10305c4(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@3e84c1c(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@10305c4(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 From 8d646299372883b4951a46278fc4fba81ca7414d Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 21 Oct 2025 13:34:39 +0530 Subject: [PATCH 106/300] Enable email verification in publish workflow --- .github/workflows/publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 86a16d699c..2a19d6fbee 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -41,7 +41,7 @@ jobs: "PUBLIC_CONSOLE_MODE=cloud" "PUBLIC_CONSOLE_FEATURE_FLAGS=" "PUBLIC_APPWRITE_MULTI_REGION=true" - "PUBLIC_CONSOLE_EMAIL_VERIFICATION=false" + "PUBLIC_CONSOLE_EMAIL_VERIFICATION=true" "PUBLIC_CONSOLE_MOCK_AI_SUGGESTIONS=false" "PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}" "PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY }}" From 5eaeccf7d0e78fd0bbaf87c4746fdef09d9c497f Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 21 Oct 2025 16:04:08 +0530 Subject: [PATCH 107/300] address design review comments. --- .../(suggestions)/empty.svelte | 128 +++++++++++++++--- .../(suggestions)/input.svelte | 6 +- .../table-[table]/+page.svelte | 20 +-- .../table-[table]/createColumn.svelte | 9 +- .../table-[table]/indexes/+page.svelte | 24 ++-- .../table-[table]/layout/emptySheet.svelte | 27 ++-- 6 files changed, 163 insertions(+), 51 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index e02979d30f..6072015d1e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1012,6 +1012,38 @@ }); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + - {#if isUndoDeleteMode} - was deleted. You can undo this action. - {:else} - column selected - {/if} - + + {#if isUndoDeleteMode} + was deleted. You can undo this action. + {:else} + column selected + {/if} + + @@ -1299,6 +1337,9 @@ on:click={() => (selectedColumnId = null)}> Cancel + + + {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte index f389a56c63..70dec29632 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte @@ -70,7 +70,7 @@ {#if $tableColumnSuggestions.enabled && featureActive} -
+
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 63089d7f33..29446deae5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -245,7 +245,7 @@ { $randomDataModalState.show = true; @@ -272,14 +272,6 @@ {/snippet} {#snippet actions()} - { - $showCreateColumnSheet.show = true; - }} /> - {#if isCloud} {/if} + { + $showCreateColumnSheet.show = true; + }} /> + { $randomDataModalState.show = true; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte index 97f06e128d..039b0a854d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/createColumn.svelte @@ -39,6 +39,8 @@ const tableId = page.params.table; const databaseId = page.params.database; + let showSuggestionsAlert = $state(true); + let key: string = $state(column?.key ?? null); let data: Partial = $state({ required: column?.required ?? false, @@ -184,9 +186,9 @@ - {#if isCloud} + {#if isCloud && showSuggestionsAlert}
- + (showSuggestionsAlert = false)}> @@ -233,7 +235,10 @@ From f09458bc5055348b4ca27b91f061e17751b02625 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:40:49 +0530 Subject: [PATCH 230/300] fix(functions): align deployment action menu icon placement to match sites and solve error page issue --- .../(components)/downloadActionMenuItem.svelte | 5 +++-- .../(modals)/deleteModal.svelte | 9 ++++++++- .../functions/function-[function]/+page.svelte | 4 ++-- .../functions/function-[function]/delete.svelte | 9 ++++++++- .../deployment-[deployment]/+page.svelte | 16 ++++++++++++++-- .../deployments/deleteDeploymentModal.svelte | 11 ++++++----- 6 files changed, 41 insertions(+), 13 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(components)/downloadActionMenuItem.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(components)/downloadActionMenuItem.svelte index b91ee6d6f0..85d45bb275 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(components)/downloadActionMenuItem.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(components)/downloadActionMenuItem.svelte @@ -2,7 +2,7 @@ import { page } from '$app/state'; import { SubMenu } from '$lib/components/menu'; import { type Models } from '@appwrite.io/console'; - import { IconDownload } from '@appwrite.io/pink-icons-svelte'; + import { IconDownload, IconChevronRight } from '@appwrite.io/pink-icons-svelte'; import { ActionMenu } from '@appwrite.io/pink-svelte'; import { getOutputDownload, getSourceDownload } from '../store'; @@ -13,7 +13,8 @@ {#if deployment?.status === 'ready' || deployment?.status === 'failed' || deployment?.status === 'building'} - Download + Download diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/deleteModal.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/deleteModal.svelte index a8a5d819e6..57acdf677a 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/deleteModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/(modals)/deleteModal.svelte @@ -1,5 +1,6 @@ - - - Are you sure you want to delete this deployment? - diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deleteDeploymentModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deleteDeploymentModal.svelte index 74a66080b3..4d781eca8e 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deleteDeploymentModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deleteDeploymentModal.svelte @@ -22,7 +22,7 @@ siteId: selectedDeployment.resourceId, deploymentId: selectedDeployment.$id }); - if (page.url.href.includes(`deployment-${selectedDeployment.$id}`)) { + if (page.route.id?.includes('deployment-[deployment]')) { goto( `${base}/project-${page.params.region}-${page.params.project}/sites/site-${page.params.site}/deployments` ); From 407163c1b111e33f12d82e983378e9b5ba4d9740 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 30 Oct 2025 19:53:42 +0530 Subject: [PATCH 232/300] update: method. --- src/lib/components/csvImportBox.svelte | 2 +- .../functions/function-[function]/executions/+page.svelte | 2 +- .../overview/platforms/createAndroid.svelte | 2 +- .../overview/platforms/createApple.svelte | 2 +- .../overview/platforms/createFlutter.svelte | 2 +- .../overview/platforms/createReactNative.svelte | 2 +- .../(console)/project-[region]-[project]/sites/+page.svelte | 2 +- .../sites/create-site/deploying/+page.svelte | 2 +- .../project-[region]-[project]/sites/site-[site]/+page.svelte | 2 +- .../sites/site-[site]/deployments/+layout.svelte | 2 +- .../sites/site-[site]/deployments/+page.svelte | 2 +- .../sites/site-[site]/logs/+page.svelte | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 756d357e21..879655045d 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -178,7 +178,7 @@ } }); - return subscription.close(); + return await subscription.close(); }); $: isOpen = true; diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte index 1367534315..9b691bbfd0 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte @@ -26,7 +26,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte index 239432d8d7..dd17d5b294 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte @@ -93,7 +93,7 @@ const val APPWRITE_PUBLIC_ENDPOINT = "${sdk.forProject(page.params.region, page. } ); - return subscription.close(); + return await subscription.close(); }); onDestroy(resetPlatformStore); diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte index 17623871a0..6d0bd3ad44 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte @@ -102,7 +102,7 @@ APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.proj } ); - return subscription.close(); + return await subscription.close(); }); onDestroy(resetPlatformStore); diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte index 0c03526121..437c6f6eb0 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte @@ -168,7 +168,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); onDestroy(resetPlatformStore); diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte index 4c3f672af4..08b0f5d0ca 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte @@ -129,7 +129,7 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p } ); - return subscription.close(); + return await subscription.close(); }); onDestroy(resetPlatformStore); diff --git a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte index 9929b4f404..04c5579fb8 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte @@ -58,7 +58,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte index 813dd0b80c..bb5b124ed9 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/deploying/+page.svelte @@ -39,7 +39,7 @@ } }); - return subscription.close(); + return await subscription.close(); }); diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte index 97ccdccb8e..ea8604537a 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/+page.svelte @@ -28,7 +28,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte index f33071286b..92a93d82b1 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte @@ -39,7 +39,7 @@ } }); - return subscription.close(); + return await subscription.close(); }); $: $registerCommands([ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte index c795656a9c..6a15386a18 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte @@ -45,7 +45,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); async function connect(selectedInstallationId: string, selectedRepository: string) { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte index b3799c80dd..d6c84e3325 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte @@ -22,7 +22,7 @@ } ); - return subscription.close(); + return await subscription.close(); }); From 33b884c4eea1f66d18b8929f305cc5ff08035f0c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:47:18 -0700 Subject: [PATCH 233/300] Add copilot-setup-steps.yml for workspace setup (#2524) Download dependencies so they are available in coding agents. Otherwise, the coding agents are unable to access pkg.pr.new and pkg.vc domains so the package install fails. --- .github/workflows/copilot-setup-steps.yml | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/copilot-setup-steps.yml diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml new file mode 100644 index 0000000000..6926b0c50d --- /dev/null +++ b/.github/workflows/copilot-setup-steps.yml @@ -0,0 +1,28 @@ +name: Copilot Setup Steps + +# Automatically run the setup steps when they are changed to allow for easy validation, and +# allow manual testing through the repository's "Actions" tab +on: + workflow_dispatch: + push: + paths: + - .github/workflows/copilot-setup-steps.yml + pull_request: + paths: + - .github/workflows/copilot-setup-steps.yml + +jobs: + copilot-setup-steps: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v5 + - name: Use Node.js + uses: actions/setup-node@v6 + with: + node-version: 20 + - name: Install pnpm + uses: pnpm/action-setup@v4 + - name: Install dependencies + run: pnpm install --frozen-lockfile From e35f027c8afbd215ecbadc818acc3cb0721a70b8 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:36:01 +0530 Subject: [PATCH 234/300] use typed resolve for project overview redirect --- .../project-[region]-[project]/overview/header.svelte | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte index 48aa3b926c..55facf195b 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte @@ -5,7 +5,7 @@ import { projectRegion } from '../store'; import { hasOnboardingDismissed, setHasOnboardingDismissed } from '$lib/helpers/onboarding'; import { goto } from '$app/navigation'; - import { base } from '$app/paths'; + import { resolve } from '$app/paths'; import { Layout, Button, Typography } from '@appwrite.io/pink-svelte'; import { user } from '$lib/stores/user'; import { isSmallViewport } from '$lib/stores/viewport'; @@ -15,7 +15,10 @@ setHasOnboardingDismissed(page.data.project.$id, $user); trackEvent('onboarding_hub_platform_dismiss'); goto( - `${base}/project-${page.data.project.region}-${page.data.project.$id}/overview/platforms` + resolve('/(console)/project-[region]-[project]/overview/platforms', { + region: page.data.project.region, + project: page.data.project.$id + }) ); } From b8bf649350cb52fec3fd60242c6ffee08e7e6295 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 31 Oct 2025 13:51:12 +0530 Subject: [PATCH 235/300] use page.params --- .../overview/header.svelte | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte index 55facf195b..ff21073979 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte @@ -12,12 +12,12 @@ import { trackEvent } from '$lib/actions/analytics'; function dismissOnboarding() { - setHasOnboardingDismissed(page.data.project.$id, $user); + setHasOnboardingDismissed(page.params.project, $user); trackEvent('onboarding_hub_platform_dismiss'); goto( resolve('/(console)/project-[region]-[project]/overview/platforms', { - region: page.data.project.region, - project: page.data.project.$id + region: page.params.region, + project: page.params.project }) ); } @@ -33,8 +33,8 @@ - {page.data.project.$id} + {page.params.project} {#if $projectRegion} {/if} @@ -61,7 +61,7 @@ >Follow a few quick steps to get started with Appwrite
- {#if !hasOnboardingDismissed(page.data.project.$id, $user)} + {#if !hasOnboardingDismissed(page.params.project, $user)} Dismiss this page From 6cd6310eb770316545ac34d00b14b2c5b98e9530 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 31 Oct 2025 14:37:32 +0530 Subject: [PATCH 236/300] update: simplify logic. --- src/lib/components/backupRestoreBox.svelte | 2 +- src/lib/components/csvImportBox.svelte | 20 +++----- src/lib/stores/sdk.ts | 34 ++++++++++--- .../executions/+page.svelte | 18 +++---- .../overview/platforms/createAndroid.svelte | 30 ++++++------ .../overview/platforms/createApple.svelte | 30 ++++++------ .../overview/platforms/createFlutter.svelte | 30 ++++++------ .../platforms/createReactNative.svelte | 30 ++++++------ .../overview/platforms/createWeb.svelte | 30 ++++++------ .../sites/+page.svelte | 18 +++---- .../sites/create-site/deploying/+page.svelte | 45 ++++++++--------- .../sites/site-[site]/+page.svelte | 23 ++++----- .../site-[site]/deployments/+layout.svelte | 49 +++++++++---------- .../site-[site]/deployments/+page.svelte | 21 +++----- .../deployment-[deployment]/+page.svelte | 26 +++++----- .../sites/site-[site]/logs/+page.svelte | 18 +++---- 16 files changed, 199 insertions(+), 225 deletions(-) diff --git a/src/lib/components/backupRestoreBox.svelte b/src/lib/components/backupRestoreBox.svelte index 2f660985e0..f794c29814 100644 --- a/src/lib/components/backupRestoreBox.svelte +++ b/src/lib/components/backupRestoreBox.svelte @@ -125,7 +125,7 @@ onMount(() => { // fast path: don't subscribe if org is on a free plan or is self-hosted. - if (isSelfHosted || (isCloud && $organization.billingPlan === BillingPlan.FREE)) return; + if (isSelfHosted || (isCloud && $organization?.billingPlan === BillingPlan.FREE)) return; return realtime .forProject(page.params.region, page.params.project) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 879655045d..68aadd835b 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -2,8 +2,8 @@ import { onMount } from 'svelte'; import { base } from '$app/paths'; import { page } from '$app/state'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants'; + import { realtime, sdk } from '$lib/stores/sdk'; import { goto, invalidate } from '$app/navigation'; import { getProjectId } from '$lib/helpers/project'; import { writable, type Writable } from 'svelte/store'; @@ -157,7 +157,7 @@ } } - onMount(async () => { + onMount(() => { sdk.forProject(page.params.region, page.params.project) .migrations.list({ queries: [ @@ -169,16 +169,12 @@ migrations.migrations.forEach(updateOrAddItem); }); - const subscription: AppwriteRealtimeSubscription = await sdk - .forConsoleIn(page.params.region) - .realtime.subscribe('console', (response) => { - if (!response.channels.includes(`projects.${getProjectId()}`)) return; - if (response.events.includes('migrations.*')) { - updateOrAddItem(response.payload as Payload); - } - }); - - return await subscription.close(); + return realtime.forConsole(page.params.region, 'console', (response) => { + if (!response.channels.includes(`projects.${getProjectId()}`)) return; + if (response.events.includes('migrations.*')) { + updateOrAddItem(response.payload as Payload); + } + }); }); $: isOpen = true; diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index 8fd1b477bf..c7278ffd54 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -1,4 +1,4 @@ -import { isMultiRegionSupported, VARS } from '$lib/system'; +import { isDev, isMultiRegionSupported, VARS } from '$lib/system'; import { Account, Assistant, @@ -147,6 +147,33 @@ export const realtime = { clientRealtime.setEndpoint(endpoint); } return clientRealtime; + }, + + forConsole( + region: string, + channels: string | string[], + // the generic `` is too strict, any is too loose! + callback: Parameters[1] + ): () => void { + let closed = false; + + const channelsArray = Array.isArray(channels) ? channels : [channels]; + const subscriptionPromise = sdk + .forConsoleIn(region) + .realtime.subscribe(channelsArray, callback); + + return () => { + if (closed) return; + closed = true; + + subscriptionPromise + .then((sub) => sub.close()) + .catch((error) => { + if (isDev) { + console.log(error.message); + } + }); + }; } }; @@ -191,11 +218,6 @@ export enum RuleTrigger { MANUAL = 'manual' } -/** - * Some type imports are broken on the SDK, this works correctly for the time being! - */ -export type AppwriteRealtimeSubscription = Awaited>; - export const createAdminClient = () => { return new Client().setEndpoint(getApiEndpoint()).setMode('admin').setProject(getProjectId()); }; diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte index 9b691bbfd0..55a275d5bb 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/executions/+page.svelte @@ -4,7 +4,7 @@ import { Dependencies } from '$lib/constants'; import { Button } from '$lib/elements/forms'; import { Container, ResponsiveContainerHeader } from '$lib/layout'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; + import { realtime } from '$lib/stores/sdk'; import { onMount } from 'svelte'; import { project } from '$routes/(console)/project-[region]-[project]/store'; import { base } from '$app/paths'; @@ -13,20 +13,16 @@ import Table from './table.svelte'; import { columns } from './store'; import type { PageProps } from './$types'; + import { page } from '$app/state'; let { data }: PageProps = $props(); - onMount(async () => { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes('functions.*.executions.*')) { - invalidate(Dependencies.EXECUTIONS); - } + onMount(() => { + return realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes('functions.*.executions.*')) { + invalidate(Dependencies.EXECUTIONS); } - ); - - return await subscription.close(); + }); }); diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte index dd17d5b294..8c455b0895 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte @@ -16,8 +16,8 @@ import { IconAndroid, IconAppwrite, IconInfo } from '@appwrite.io/pink-icons-svelte'; import { Card } from '$lib/components'; import { page } from '$app/state'; - import { onDestroy, onMount } from 'svelte'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; + import { onMount } from 'svelte'; + import { realtime, sdk } from '$lib/stores/sdk'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { addNotification } from '$lib/stores/notifications'; import { fade } from 'svelte/transition'; @@ -80,23 +80,21 @@ const val APPWRITE_PUBLIC_ENDPOINT = "${sdk.forProject(page.params.region, page. createPlatform.reset(); } - onMount(async () => { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes(`projects.${projectId}.ping`)) { - connectionSuccessful = true; - invalidate(Dependencies.ORGANIZATION); - invalidate(Dependencies.PROJECT); - subscription.close(); - } + onMount(() => { + const subscription = realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes(`projects.${projectId}.ping`)) { + connectionSuccessful = true; + invalidate(Dependencies.ORGANIZATION); + invalidate(Dependencies.PROJECT); + subscription(); } - ); + }); - return await subscription.close(); + return () => { + subscription(); + resetPlatformStore(); + }; }); - - onDestroy(resetPlatformStore); { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes(`projects.${projectId}.ping`)) { - connectionSuccessful = true; - invalidate(Dependencies.ORGANIZATION); - invalidate(Dependencies.PROJECT); - subscription.close(); - } + onMount(() => { + const subscription = realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes(`projects.${projectId}.ping`)) { + connectionSuccessful = true; + invalidate(Dependencies.ORGANIZATION); + invalidate(Dependencies.PROJECT); + subscription(); } - ); + }); - return await subscription.close(); + return () => { + subscription(); + resetPlatformStore(); + }; }); - - onDestroy(resetPlatformStore); { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes(`projects.${projectId}.ping`)) { - connectionSuccessful = true; - invalidate(Dependencies.ORGANIZATION); - invalidate(Dependencies.PROJECT); - subscription.close(); - } + onMount(() => { + const subscription = realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes(`projects.${projectId}.ping`)) { + connectionSuccessful = true; + invalidate(Dependencies.ORGANIZATION); + invalidate(Dependencies.PROJECT); + subscription(); } - ); + }); - return await subscription.close(); + return () => { + subscription(); + resetPlatformStore(); + }; }); - - onDestroy(resetPlatformStore); { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes(`projects.${projectId}.ping`)) { - connectionSuccessful = true; - invalidate(Dependencies.ORGANIZATION); - invalidate(Dependencies.PROJECT); - subscription.close(); - } + onMount(() => { + const subscription = realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes(`projects.${projectId}.ping`)) { + connectionSuccessful = true; + invalidate(Dependencies.ORGANIZATION); + invalidate(Dependencies.PROJECT); + subscription(); } - ); + }); - return await subscription.close(); + return () => { + subscription(); + resetPlatformStore(); + }; }); - - onDestroy(resetPlatformStore); import { onMount } from 'svelte'; import { page } from '$app/state'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; + import { realtime } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants'; import { invalidate, goto } from '$app/navigation'; import { registerCommands } from '$lib/commandCenter'; @@ -11,35 +11,32 @@ import { canWriteSites } from '$lib/stores/roles'; import { IconList, IconPlus, IconSearch } from '@appwrite.io/pink-icons-svelte'; - onMount(async () => { + onMount(() => { let previousStatus: string = null; - const subscription: AppwriteRealtimeSubscription = - await sdk.forConsole.realtime.subscribe('console', (message) => { - if ( - message.payload.status !== 'ready' && - previousStatus === message.payload.status - ) { - return; - } - previousStatus = message.payload.status; - if (message.events.includes('sites.*.deployments.*.create')) { - invalidate(Dependencies.DEPLOYMENTS); + return realtime.forConsole(page.params.region, 'console', (message) => { + const payload = message.payload as Models.Deployment; + if (payload.status !== 'ready' && previousStatus === payload.status) { + return; + } - return; - } - if (message.events.includes('sites.*.deployments.*.update')) { - invalidate(Dependencies.DEPLOYMENTS); - invalidate(Dependencies.SITE); - return; - } - if (message.events.includes('sites.*.deployments.*.delete')) { - invalidate(Dependencies.DEPLOYMENTS); + previousStatus = payload.status; - return; - } - }); + if (message.events.includes('sites.*.deployments.*.create')) { + invalidate(Dependencies.DEPLOYMENTS); + + return; + } + if (message.events.includes('sites.*.deployments.*.update')) { + invalidate(Dependencies.DEPLOYMENTS); + invalidate(Dependencies.SITE); + return; + } + if (message.events.includes('sites.*.deployments.*.delete')) { + invalidate(Dependencies.DEPLOYMENTS); - return await subscription.close(); + return; + } + }); }); $: $registerCommands([ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte index 6a15386a18..29df3fa637 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+page.svelte @@ -13,7 +13,7 @@ import DeploymentMetrics from './deploymentMetrics.svelte'; import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import { onMount } from 'svelte'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; + import { realtime, sdk } from '$lib/stores/sdk'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import CreateCliModal from './createCliModal.svelte'; @@ -31,21 +31,12 @@ let showConnectManual = false; let showAlert = true; - onMount(async () => { - if (page.url.searchParams.has('createDeployment')) { - showConnectRepo = true; - } - - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes('sites.*.deployments.*')) { - invalidate(Dependencies.DEPLOYMENTS); - } + onMount(() => { + return realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes('sites.*.deployments.*')) { + invalidate(Dependencies.DEPLOYMENTS); } - ); - - return await subscription.close(); + }); }); async function connect(selectedInstallationId: string, selectedRepository: string) { diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte index 323aa81f4e..eb073c718d 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte index d6c84e3325..3ad6b4645b 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/logs/+page.svelte @@ -4,25 +4,21 @@ import { Dependencies } from '$lib/constants'; import { Button } from '$lib/elements/forms'; import { Container, ResponsiveContainerHeader } from '$lib/layout'; - import { type AppwriteRealtimeSubscription, sdk } from '$lib/stores/sdk'; + import { realtime } from '$lib/stores/sdk'; import { onMount } from 'svelte'; import Table from './table.svelte'; import { Card, Empty } from '@appwrite.io/pink-svelte'; import { columns } from './store'; + import { page } from '$app/state'; export let data; - onMount(async () => { - const subscription: AppwriteRealtimeSubscription = await sdk.forConsole.realtime.subscribe( - 'console', - (response) => { - if (response.events.includes('sites.*.executions.*')) { - invalidate(Dependencies.EXECUTIONS); - } + onMount(() => { + return realtime.forConsole(page.params.region, 'console', (response) => { + if (response.events.includes('sites.*.executions.*')) { + invalidate(Dependencies.EXECUTIONS); } - ); - - return await subscription.close(); + }); }); From f0cae0b4ba984a43be1237965168ee8f57915427 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:51:15 +0530 Subject: [PATCH 237/300] Update src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../sites/(components)/logsTimer.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte index 9f503de947..c51e3b3629 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/logsTimer.svelte @@ -9,7 +9,7 @@ let { status, deployment }: { status: string; deployment: Models.Deployment } = $props(); - // mmoize timeout value to avoid recalculating on every render + // memoize timeout value to avoid recalculating on every render let timeoutSeconds = $derived(getBuildTimeoutSeconds($regionalConsoleVariables)); let effectiveStatus = $derived( getEffectiveBuildStatus(status, deployment.$createdAt, timeoutSeconds) From 601eb81d4a13b9ce065df300d600f1e88a741807 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 31 Oct 2025 15:23:25 +0530 Subject: [PATCH 238/300] update: migrate projects realtime from `client.subscribe` to standalone realtime service as well. --- src/lib/components/backupRestoreBox.svelte | 22 +++--- src/lib/components/migrationBox.svelte | 17 ++--- src/lib/stores/sdk.ts | 76 ++++++++++++------- .../project-[region]-[project]/+layout.svelte | 14 ++-- .../database-[database]/backups/+page.svelte | 21 ++--- .../table-[table]/+layout.svelte | 47 ++++++------ .../function-[function]/+layout.svelte | 47 ++++++------ .../executions/+layout.svelte | 18 ++--- .../settings/migrations/+page.svelte | 12 ++- 9 files changed, 139 insertions(+), 135 deletions(-) diff --git a/src/lib/components/backupRestoreBox.svelte b/src/lib/components/backupRestoreBox.svelte index f794c29814..f1de9d3bab 100644 --- a/src/lib/components/backupRestoreBox.svelte +++ b/src/lib/components/backupRestoreBox.svelte @@ -127,18 +127,16 @@ // fast path: don't subscribe if org is on a free plan or is self-hosted. if (isSelfHosted || (isCloud && $organization?.billingPlan === BillingPlan.FREE)) return; - return realtime - .forProject(page.params.region, page.params.project) - .subscribe('console', (response) => { - if (!response.channels.includes(`projects.${getProjectId()}`)) return; - - if ( - response.events.includes('archives.*') || - response.events.includes('restorations.*') - ) { - updateOrAddItem(response.payload); - } - }); + return realtime.forProject(page.params.region, 'console', (response) => { + if (!response.channels.includes(`projects.${getProjectId()}`)) return; + + if ( + response.events.includes('archives.*') || + response.events.includes('restorations.*') + ) { + updateOrAddItem(response.payload); + } + }); }); diff --git a/src/lib/components/migrationBox.svelte b/src/lib/components/migrationBox.svelte index 52155f0e2f..3dd959793b 100644 --- a/src/lib/components/migrationBox.svelte +++ b/src/lib/components/migrationBox.svelte @@ -50,15 +50,14 @@ })(); onMount(() => { - return realtime - .forProject(page.params.region, page.params.project) - .subscribe(['console'], async (response) => { - if (!response.channels.includes(`projects.${getProjectId()}`)) return; - if (response.events.includes('migrations.*')) { - if (response.payload.source === 'Backup') return; - migration = response.payload; - } - }); + return realtime.forProject(page.params.region, ['console'], async (response) => { + if (!response.channels.includes(`projects.${getProjectId()}`)) return; + if (response.events.includes('migrations.*')) { + const payload = response.payload as Models.Migration; + if (payload.source === 'Backup') return; + migration = payload; + } + }); }); diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index c7278ffd54..94b64434d2 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -42,7 +42,6 @@ import { SUBDOMAIN_TOR } from '$lib/constants'; import { building } from '$app/environment'; -import { getProjectId } from '$lib/helpers/project'; export function getApiEndpoint(region?: string): string { if (building) return ''; @@ -141,39 +140,32 @@ const sdkForProject = { }; export const realtime = { - forProject(region: string, _projectId: string) { + forProject( + region: string, + channels: string | string[], + callback: AppwriteRealtimeResponseEvent + ) { const endpoint = getApiEndpoint(region); if (endpoint !== clientRealtime.config.endpoint) { clientRealtime.setEndpoint(endpoint); } - return clientRealtime; + + // because uses a different client! + const realtime = new Realtime(clientRealtime); + + return createRealtimeSubscription(realtime, channels, callback); }, forConsole( region: string, channels: string | string[], - // the generic `` is too strict, any is too loose! - callback: Parameters[1] + callback: AppwriteRealtimeResponseEvent ): () => void { - let closed = false; - - const channelsArray = Array.isArray(channels) ? channels : [channels]; - const subscriptionPromise = sdk - .forConsoleIn(region) - .realtime.subscribe(channelsArray, callback); - - return () => { - if (closed) return; - closed = true; - - subscriptionPromise - .then((sub) => sub.close()) - .catch((error) => { - if (isDev) { - console.log(error.message); - } - }); - }; + const realtimeInstance = region + ? sdk.forConsoleIn(region).realtime + : sdk.forConsole.realtime; + + return createRealtimeSubscription(realtimeInstance, channels, callback); } }; @@ -203,8 +195,8 @@ export const sdk = { }; export enum RuleType { - DEPLOYMENT = 'deployment', API = 'api', + DEPLOYMENT = 'deployment', REDIRECT = 'redirect' } @@ -218,6 +210,36 @@ export enum RuleTrigger { MANUAL = 'manual' } -export const createAdminClient = () => { - return new Client().setEndpoint(getApiEndpoint()).setMode('admin').setProject(getProjectId()); +export type RealtimeResponse = { + events: string[]; + channels: string[]; + timestamp: string; + payload: unknown; }; + +// the generic `` is too strict, any is too loose! +export type AppwriteRealtimeResponseEvent = (response: RealtimeResponse) => void; + +function createRealtimeSubscription( + realtimeInstance: Realtime, + channels: string | string[], + callback: AppwriteRealtimeResponseEvent +): () => void { + let closed = false; + + const channelsArray = Array.isArray(channels) ? channels : [channels]; + const subscriptionPromise = realtimeInstance.subscribe(channelsArray, callback); + + return () => { + if (closed) return; + closed = true; + + subscriptionPromise + .then((sub) => sub.close()) + .catch((error) => { + if (isDev) { + console.log(error.message); + } + }); + }; +} diff --git a/src/routes/(console)/project-[region]-[project]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/+layout.svelte index f233956c07..4268212590 100644 --- a/src/routes/(console)/project-[region]-[project]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/+layout.svelte @@ -27,15 +27,13 @@ import CsvImportBox from '$lib/components/csvImportBox.svelte'; onMount(() => { - return realtime - .forProject(page.params.region, page.params.project) - .subscribe(['project', 'console'], (response) => { - if (response.events.includes('stats.connections')) { - for (const [projectId, value] of Object.entries(response.payload)) { - stats.add(projectId, [new Date(response.timestamp).toISOString(), value]); - } + return realtime.forProject(page.params.region, ['project', 'console'], (response) => { + if (response.events.includes('stats.connections')) { + for (const [projectId, value] of Object.entries(response.payload)) { + stats.add(projectId, [new Date(response.timestamp).toISOString(), value]); } - }); + } + }); }); $: $registerCommands([ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/+page.svelte index b9c1c57c85..99521078d7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/+page.svelte @@ -161,19 +161,14 @@ }; onMount(() => { - return realtime - .forProject(page.params.region, page.params.project) - .subscribe(['project', 'console'], (response) => { - // fast path return. - if (!response.channels.includes(`projects.${getProjectId()}`)) return; - - if ( - response.events.includes('archives.*') || - response.events.includes('policies.*') - ) { - invalidate(Dependencies.BACKUPS); - } - }); + return realtime.forProject(page.params.region, ['project', 'console'], (response) => { + // fast path return. + if (!response.channels.includes(`projects.${getProjectId()}`)) return; + + if (response.events.includes('archives.*') || response.events.includes('policies.*')) { + invalidate(Dependencies.BACKUPS); + } + }); }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index cfefc3a7f7..ec56fd0eb2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -20,7 +20,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.svelte index b6f8083bc7..cc82cb18cb 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/migrations/+page.svelte @@ -38,13 +38,11 @@ let migration: Models.Migration = null; onMount(() => { - return realtime - .forProject(page.params.region, page.params.project) - .subscribe(['project', 'console'], (response) => { - if (response.events.includes('migrations.*')) { - invalidate(Dependencies.MIGRATIONS); - } - }); + return realtime.forProject(page.params.region, ['project', 'console'], (response) => { + if (response.events.includes('migrations.*')) { + invalidate(Dependencies.MIGRATIONS); + } + }); }); $: $registerCommands([ From 8d38c0d2391fcbdbc87723dafc0857e911e8d669 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 31 Oct 2025 15:29:46 +0530 Subject: [PATCH 239/300] update: the one last `client.subscribe`! --- .../deployment-[deployment]/+page.svelte | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte index 83247cdb2e..52adc05e9a 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte @@ -1,7 +1,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte index 8d215db1ea..4c2729da38 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte @@ -24,7 +24,7 @@ } from '@appwrite.io/pink-svelte'; import { capitalize } from '$lib/helpers/string'; import { formatTimeDetailed } from '$lib/helpers/timeConversion'; - import { getEffectiveBuildStatus, getBuildTimeoutSeconds } from '$lib/helpers/buildTimeout'; + import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout'; import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import { timer } from '$lib/actions/timer'; import { app } from '$lib/stores/app'; @@ -44,7 +44,7 @@ getEffectiveBuildStatus( data.deployment.status, data.deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) + $regionalConsoleVariables ) ); let showDelete = $state(false); diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte index 7c1a3cb073..90912af038 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte @@ -36,7 +36,7 @@ import Delete from './(modals)/deleteModal.svelte'; import { capitalize } from '$lib/helpers/string'; import { deploymentStatusConverter } from '$lib/stores/git'; - import { getEffectiveBuildStatus, getBuildTimeoutSeconds } from '$lib/helpers/buildTimeout'; + import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout'; import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import DownloadActionMenuItem from './(components)/downloadActionMenuItem.svelte'; import { Menu } from '$lib/components/menu'; @@ -107,7 +107,7 @@ {@const effectiveStatus = getEffectiveBuildStatus( deployment.status, deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) + $regionalConsoleVariables )} diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/logs.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/logs.svelte index 227a1d9f87..7fae6d0ab5 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/logs.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/logs.svelte @@ -18,7 +18,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte index e14f0f5f6b..78ad644f49 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -23,7 +23,7 @@ import { isCloud } from '$lib/system'; import { sdk } from '$lib/stores/sdk'; import { capitalize } from '$lib/helpers/string'; - import { getEffectiveBuildStatus, getBuildTimeoutSeconds } from '$lib/helpers/buildTimeout'; + import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout'; import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import { regionalProtocol } from '$routes/(console)/project-[region]-[project]/store'; import type { Snippet } from 'svelte'; @@ -43,11 +43,7 @@ } = $props(); let effectiveStatus = $derived( - getEffectiveBuildStatus( - deployment.status, - deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) - ) + getEffectiveBuildStatus(deployment.status, deployment.$createdAt, $regionalConsoleVariables) ); let show = $state(false); diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte index 3387336af4..ddc0fe6266 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte @@ -13,7 +13,7 @@ import ActivateDeploymentModal from '../../../activateDeploymentModal.svelte'; import { Accordion, Tooltip } from '@appwrite.io/pink-svelte'; import { capitalize } from '$lib/helpers/string'; - import { getEffectiveBuildStatus, getBuildTimeoutSeconds } from '$lib/helpers/buildTimeout'; + import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout'; import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import LogsTimer from '../../../(components)/logsTimer.svelte'; import { invalidate } from '$app/navigation'; @@ -27,11 +27,7 @@ let deployment = $derived(data.deployment); let effectiveStatus = $derived( - getEffectiveBuildStatus( - deployment.status, - deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) - ) + getEffectiveBuildStatus(deployment.status, deployment.$createdAt, $regionalConsoleVariables) ); let showRedeploy = $state(false); diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte index 15fc0868fa..697b9463f4 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte @@ -17,7 +17,7 @@ import { capitalize } from '$lib/helpers/string'; import DeploymentActionMenu from '../../(components)/deploymentActionMenu.svelte'; import { deploymentStatusConverter } from '$lib/stores/git'; - import { getEffectiveBuildStatus, getBuildTimeoutSeconds } from '$lib/helpers/buildTimeout'; + import { getEffectiveBuildStatus } from '$lib/helpers/buildTimeout'; import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import { sdk } from '$lib/stores/sdk'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; @@ -87,7 +87,7 @@ {@const effectiveStatus = getEffectiveBuildStatus( deployment.status, deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) + $regionalConsoleVariables )} From 032f094b22644e62f3288517a787d42fd321de09 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:55:04 +0530 Subject: [PATCH 243/300] package upgrade --- package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 199f031c58..0c7df315d4 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755", + "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@50b60cc", "@appwrite.io/pink-legacy": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 599224abda..8609a70434 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^1.1.24 version: 1.1.24(svelte@5.25.3)(zod@3.24.3) '@appwrite.io/console': - specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755 - version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755 + specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752 + version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752 '@appwrite.io/pink-icons': specifier: 0.25.0 version: 0.25.0 @@ -260,8 +260,8 @@ packages: '@analytics/type-utils@0.6.2': resolution: {integrity: sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==} - '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755': - resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755} + '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752': + resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752} version: 1.10.0 '@appwrite.io/pink-icons-svelte@2.0.0-RC.1': @@ -3703,7 +3703,7 @@ snapshots: '@analytics/type-utils@0.6.2': {} - '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755': {} + '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752': {} '@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.25.3)': dependencies: From 6a4c4ed6af06c964552d601536c883845892baba Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Fri, 31 Oct 2025 17:24:16 +0530 Subject: [PATCH 244/300] fix: errors --- .../deployment-[deployment]/+page.svelte | 5 +- .../function-[function]/table.svelte | 101 +++++++-------- .../site-[site]/deployments/table.svelte | 120 +++++++++--------- 3 files changed, 115 insertions(+), 111 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte index f66d0c1316..3eddf8b38a 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/deployment-[deployment]/+page.svelte @@ -1,7 +1,7 @@ @@ -216,7 +231,8 @@ {adapterData.ssr.desc} {/if} {#if adapterData?.ssr?.url} - Learn more + Learn more {/if} Learn more + Learn more {/if} @@ -258,7 +278,11 @@ placeholder={frameworkAdapterData?.installCommand || 'Enter install command'} /> - @@ -269,7 +293,11 @@ bind:value={buildCommand} placeholder={frameworkAdapterData?.buildCommand || 'Enter build command'} /> - @@ -280,7 +308,12 @@ bind:value={outputDirectory} placeholder={frameworkAdapterData?.outputDirectory || 'Enter output directory'} /> - @@ -305,7 +338,7 @@ - + From 2e9e4be35a6dceb75917c6c2148a40011aa7db4c Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Tue, 4 Nov 2025 17:04:08 +0530 Subject: [PATCH 263/300] fix: show scroll-to-top/bottom controls in deployment logs --- .../deployments/deployment-[deployment]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte index eb073c718d..f8076f1b54 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte @@ -83,7 +83,7 @@ open badgeType={badgeTypeDeployment(deployment.status)} hideDivider> - + From 4f6919505c1a56e95433297cf847bbc5fe3d1f40 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Tue, 4 Nov 2025 21:17:24 -0800 Subject: [PATCH 264/300] Update footer to hide version display on Cloud (#2550) * Initial plan * Hide version display on Cloud mode Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stnguyen90 <1477010+stnguyen90@users.noreply.github.com> --- src/lib/layout/footer.svelte | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/lib/layout/footer.svelte b/src/lib/layout/footer.svelte index 54e8ec053a..ede26618b4 100644 --- a/src/lib/layout/footer.svelte +++ b/src/lib/layout/footer.svelte @@ -76,7 +76,7 @@ {/if} - {#if $version} + {#if $version && !isCloud} {/if} {#if $isSmallViewport} - {#if $version} + {#if $version && !isCloud} @@ -151,15 +151,18 @@ style="white-space: nowrap;"> Version {$version} - {#if isCloud} - - - {/if} + {/if} + {#if isCloud} + + + + + {/if} {/if} From d36135f5b7851281c2bd69cf81cc45abe7cb64e3 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 12:51:37 +0530 Subject: [PATCH 265/300] auto-remove stale user/team roles --- .../components/permissions/permissions.svelte | 2 +- src/lib/components/permissions/row.svelte | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 46b6a9bb32..a96094231e 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -139,7 +139,7 @@ {#each [...$groups] as [role, permission] (role)} - + deleteRole(role)} /> - import { type ComponentProps, type Snippet } from 'svelte'; + import { type ComponentProps, type Snippet, createEventDispatcher, onMount } from 'svelte'; import { sdk } from '$lib/stores/sdk'; import type { Models } from '@appwrite.io/console'; import { AvatarInitials } from '../'; @@ -38,6 +38,8 @@ let { role, placement = 'bottom-start', children }: Props = $props(); + const dispatch = createEventDispatcher<{ notFound: string }>(); + type ParsedPermission = { type: 'user' | 'team' | 'other'; id: string; @@ -111,6 +113,19 @@ return fetchPromise; } + async function verifyExistence() { + try { + const data = await getData(role); + if (data?.notFound) { + dispatch('notFound', role); + } + } catch {} + } + + onMount(() => { + verifyExistence(); + }); + let isMouseOverTooltip = $state(false); function hidePopover(hideTooltip: () => void, timeout = true) { if (!timeout) { From 4d14048506d36c0cef10f8f32f23af17f6f853aa Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:40:00 +0530 Subject: [PATCH 266/300] format --- src/lib/components/permissions/row.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 5703b6bb39..39467b17b5 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -177,7 +177,7 @@ {:then data} {formatName( data.name ?? data?.email ?? data?.phone ?? '-', - $isSmallViewport ? 16 : 18 + $isSmallViewport ? 16 : 20 )} {/await} @@ -300,7 +300,7 @@ size="xs" variant="m-400" color="--fgcolor-neutral-secondary"> - Email: {data.email} + Email: {formatName(data.email, $isSmallViewport ? 24 : 32)} {/if} {#if data.phone} From fa128aef6eebd68316d442e375420fa1117d1867 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:48:23 +0530 Subject: [PATCH 267/300] make it mobile responsive --- .../components/permissions/permissions.svelte | 16 +++------------- src/lib/components/permissions/row.svelte | 5 ++++- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index a96094231e..9fb392d4df 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -20,6 +20,7 @@ import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte'; import type { PinkColumn } from '$lib/helpers/types'; import { Card } from '$lib/components'; + import TableScroll from '$lib/elements/table/tableScroll.svelte'; export let withCreate = false; export let permissions: string[] = []; @@ -124,7 +125,7 @@ {#if [...$groups]?.length} -
+ Role @@ -174,7 +175,7 @@ {/each} -
+
{/if} - - diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 39467b17b5..b0dad2478c 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -300,7 +300,10 @@ size="xs" variant="m-400" color="--fgcolor-neutral-secondary"> - Email: {formatName(data.email, $isSmallViewport ? 24 : 32)} + Email: {formatName( + data.email, + $isSmallViewport ? 24 : 32 + )} {/if} {#if data.phone} From d17092eb0f2b732f71fe5724168aa666cca0d9e4 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:54:26 +0530 Subject: [PATCH 268/300] used caption --- src/lib/components/permissions/row.svelte | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index b0dad2478c..4a63db4fe7 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -296,23 +296,21 @@ {#if data.email} - Email: {formatName( data.email, $isSmallViewport ? 24 : 32 )} - + {/if} {#if data.phone} - Phone: {data.phone} - + {/if} {/if} From dd1d49cc37155935119264b441c7435e9477a5ab Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 13:59:34 +0530 Subject: [PATCH 269/300] Update src/lib/components/permissions/permissions.svelte Co-authored-by: Darshan --- src/lib/components/permissions/permissions.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 9fb392d4df..bc557f7649 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -20,7 +20,7 @@ import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte'; import type { PinkColumn } from '$lib/helpers/types'; import { Card } from '$lib/components'; - import TableScroll from '$lib/elements/table/tableScroll.svelte'; + import { TableScroll } from '$lib/elements/table'; export let withCreate = false; export let permissions: string[] = []; From cfde744f39287da2c7408ada4f4994373c20436b Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 16:06:03 +0530 Subject: [PATCH 270/300] use callbak --- src/lib/components/permissions/permissions.svelte | 2 +- src/lib/components/permissions/row.svelte | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 9fb392d4df..e240db367b 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -140,7 +140,7 @@ {#each [...$groups] as [role, permission] (role)} - deleteRole(role)} /> + deleteRole(role)} /> - import { type ComponentProps, type Snippet, createEventDispatcher, onMount } from 'svelte'; + import { type ComponentProps, type Snippet, onMount } from 'svelte'; import { sdk } from '$lib/stores/sdk'; import type { Models } from '@appwrite.io/console'; import { AvatarInitials } from '../'; @@ -34,11 +34,10 @@ role: string; placement?: ComponentProps['placement']; children?: Snippet; + onNotFound?: (role: string) => void; } - let { role, placement = 'bottom-start', children }: Props = $props(); - - const dispatch = createEventDispatcher<{ notFound: string }>(); + let { role, placement = 'bottom-start', children, onNotFound }: Props = $props(); type ParsedPermission = { type: 'user' | 'team' | 'other'; @@ -117,7 +116,7 @@ try { const data = await getData(role); if (data?.notFound) { - dispatch('notFound', role); + onNotFound?.(role); } } catch {} } From 754ea7d917f3c26fd4044bc8b6bddf5b3383bdb1 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Wed, 5 Nov 2025 18:11:20 +0530 Subject: [PATCH 271/300] libt errror --- src/lib/components/permissions/row.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index eed2e01270..c70fd5f66f 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -118,7 +118,9 @@ if (data?.notFound) { onNotFound?.(role); } - } catch {} + } catch { + // Intentionally ignore fetch/parse errors; UI handles missing data state + } } onMount(() => { From 6832224256a75b4ec99c1e91a852056ffbaad359 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 6 Nov 2025 10:57:33 +0530 Subject: [PATCH 272/300] fix: selection and deletion bug on spreadsheet. --- .../database-[database]/table-[table]/spreadsheet.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index b479c7fc3b..6d1a68d6cf 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -104,9 +104,16 @@ }; $: rows = writable(data.rows); - $: if (rows) { + $: if ($rows) { paginatedRows.clear(); paginatedRows.setPage(1, $rows.rows); + + const hashedKey = hash($rows.total.toString()); + + if ($spreadsheetRenderKey !== hashedKey) { + /* reset ui when the underlying data changes */ + spreadsheetRenderKey.set(hash(data.rows.total.toString())); + } } const tableId = page.params.table; From da9832f8a8d0820a919ea99975fc3c687014baf7 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 6 Nov 2025 10:57:53 +0530 Subject: [PATCH 273/300] update: pnpm version. update: add caching to format. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9c20e38eae..0e3f4cad8b 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "clean": "rm -rf node_modules && rm -rf .svelte_kit && pnpm i --force", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write .", + "format": "prettier --write --cache .", "lint": "prettier --check . && eslint .", "test": "TZ=EST vitest run", "test:ui": "TZ=EST vitest --ui", @@ -95,5 +95,5 @@ "svelte-preprocess" ] }, - "packageManager": "pnpm@10.15.1" + "packageManager": "pnpm@10.20.0" } From a94470e2eb589dd925ea010881c78570e5107196 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 6 Nov 2025 10:59:33 +0530 Subject: [PATCH 274/300] update: use defined constant. --- .../database-[database]/table-[table]/spreadsheet.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 6d1a68d6cf..009179e3b6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -112,7 +112,7 @@ if ($spreadsheetRenderKey !== hashedKey) { /* reset ui when the underlying data changes */ - spreadsheetRenderKey.set(hash(data.rows.total.toString())); + spreadsheetRenderKey.set(hashedKey); } } From f6da8ded2d678db4f1e8768f52cc67f295d9b5e9 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 6 Nov 2025 11:00:43 +0530 Subject: [PATCH 275/300] update: logic, count can be same and cause issues! --- .../database-[database]/table-[table]/spreadsheet.svelte | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 009179e3b6..5611b447fe 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -108,12 +108,8 @@ paginatedRows.clear(); paginatedRows.setPage(1, $rows.rows); - const hashedKey = hash($rows.total.toString()); - - if ($spreadsheetRenderKey !== hashedKey) { - /* reset ui when the underlying data changes */ - spreadsheetRenderKey.set(hashedKey); - } + /* reset ui when the underlying data changes */ + spreadsheetRenderKey.set(hash(Date.now().toString())); } const tableId = page.params.table; From ea560c1d85715fd6a8440f3cf425293772e30bb6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 6 Nov 2025 12:12:06 +0530 Subject: [PATCH 276/300] update: logic with library side. --- package.json | 4 ++-- pnpm-lock.yaml | 20 ++++++++++---------- src/lib/elements/forms/inputSelect.svelte | 9 ++------- src/routes/(console)/supportWizard.svelte | 2 +- 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 9c20e38eae..43570707da 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2752", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521", "@faker-js/faker": "^9.9.0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 830e895041..a05369a8a4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521(svelte@5.25.3) '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 @@ -269,8 +269,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -284,8 +284,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3709,7 +3709,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@46f65c7(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@4472521(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3722,7 +3722,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@46f65c7(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@4472521(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/elements/forms/inputSelect.svelte b/src/lib/elements/forms/inputSelect.svelte index 5f56249ff8..57791bdd74 100644 --- a/src/lib/elements/forms/inputSelect.svelte +++ b/src/lib/elements/forms/inputSelect.svelte @@ -21,16 +21,17 @@ }[]; export let leadingIcon: ComponentType | undefined = undefined; - let element: HTMLSelectElement; let error: string; const handleInvalid = (event: Event) => { event.preventDefault(); + const element = event.target as HTMLInputElement; if (element.validity.valueMissing) { error = 'This field is required'; return; } + error = element.validationMessage; }; @@ -38,12 +39,6 @@ return typeof value === 'boolean' ? true : !!value; }; - $: if (required && !isNotEmpty(value)) { - element?.setCustomValidity('This field is required'); - } else { - element?.setCustomValidity(''); - } - $: if (isNotEmpty(value)) { error = null; } diff --git a/src/routes/(console)/supportWizard.svelte b/src/routes/(console)/supportWizard.svelte index 6c6aa7045f..ac39f7e89a 100644 --- a/src/routes/(console)/supportWizard.svelte +++ b/src/routes/(console)/supportWizard.svelte @@ -125,11 +125,11 @@ Date: Thu, 6 Nov 2025 13:10:53 +0530 Subject: [PATCH 277/300] submit create-project form on Enter --- .../onboarding/create-project/+page.svelte | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/routes/(console)/onboarding/create-project/+page.svelte b/src/routes/(console)/onboarding/create-project/+page.svelte index 12dcb1a76e..721a577bdc 100644 --- a/src/routes/(console)/onboarding/create-project/+page.svelte +++ b/src/routes/(console)/onboarding/create-project/+page.svelte @@ -97,24 +97,22 @@ class="u-only-dark" alt="Appwrite Logo" /> - - {#snippet submit()} - - - Create - - - {/snippet} - +
+ + {#snippet submit()} + + + Create + + + {/snippet} + +
{/if}
From e607ea4d1bbddf4d55a958e91a1e9326e41cb8fd Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:21:14 +0530 Subject: [PATCH 278/300] use FORM --- src/routes/(console)/onboarding/create-project/+page.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/onboarding/create-project/+page.svelte b/src/routes/(console)/onboarding/create-project/+page.svelte index 721a577bdc..fdc92f8cf5 100644 --- a/src/routes/(console)/onboarding/create-project/+page.svelte +++ b/src/routes/(console)/onboarding/create-project/+page.svelte @@ -1,5 +1,6 @@ {#if region} - - - - - API endpoint + + + + + API endpoint - {#if flagSrc} - {region?.name} - {/if} + {#if flagSrc} + {region?.name} + {/if} - - {region?.name} - - - - + + {region?.name} + + + + {/if} From 1d95514147b3f46196aa36871315ff33b6cdb9ac Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 7 Nov 2025 13:14:56 +0530 Subject: [PATCH 284/300] update the shimmer color on new animation for light/dark themes. --- .../database-[database]/(suggestions)/empty.svelte | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 7194bd7078..a4ceee4ae0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -2105,7 +2105,7 @@ mask-composite: exclude; } - /* shine sweep: opacity 0.02 | blur 80px | speed 2s | angle -25deg */ + /* shine sweep: opacity 0.5 light / 0.02 dark | blur 80px | speed 2s | angle -25deg */ &::after { content: ''; position: absolute; @@ -2116,7 +2116,7 @@ background: linear-gradient( 145deg, rgba(255, 255, 255, 0) 45%, - rgba(255, 255, 255, 0.02) 50%, + rgba(255, 255, 255, 0.5) 50%, rgba(255, 255, 255, 0) 55% ); transform: rotate(-25deg); @@ -2405,6 +2405,15 @@ &[data-anim='legacy']::after { background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent); } + + &[data-anim='new']::after { + background: linear-gradient( + 145deg, + rgba(255, 255, 255, 0) 45%, + rgba(255, 255, 255, 0.02) 50%, + rgba(255, 255, 255, 0) 55% + ); + } } :global(.cell-editor) { From 90c56801defd4202ca0b6b6a420b9a4fc43a4c2f Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 9 Nov 2025 18:18:34 +0530 Subject: [PATCH 285/300] update: animation. --- package.json | 2 +- .../database-[database]/(suggestions)/empty.svelte | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 75f11ee7f9..b4fc20d0fa 100644 --- a/package.json +++ b/package.json @@ -95,5 +95,5 @@ "svelte-preprocess" ] }, - "packageManager": "pnpm@10.15.1" + "packageManager": "pnpm@10.20.0" } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index a4ceee4ae0..02c06bec1f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -2065,14 +2065,16 @@ /* New animation with border glow and edge pulses */ &[data-anim='new'] { /* bg wash: 3% subtle | 7% default */ - background: rgba(253, 54, 110, 0.03); + /*background: rgba(253, 54, 110, 0.03); @supports (background: color-mix(in oklab, #fd366e 1%, transparent)) { background: linear-gradient( 135deg, color-mix(in oklab, #fd366e 3%, transparent) 0%, color-mix(in oklab, #fe9567 3%, transparent) 100% ); - } + }*/ + + background: transparent; /* border colors: pink 0.4 | orange 0.25 */ --border-pink: rgba(253, 54, 110, 0.4); @@ -2150,11 +2152,11 @@ } .edge-glow.left .grad { - animation: leftPulse 6s ease-in-out infinite; + animation: leftPulse 6s ease-in-out infinite backwards; } .edge-glow.right .grad { - animation: rightPulse 6s ease-in-out infinite; + animation: rightPulse 6s ease-in-out infinite backwards; } /* top/bottom ambient: opacity 0.05 | spread 25% | static (no animation) */ @@ -2346,7 +2348,7 @@ @keyframes leftPulse { 0%, 100% { - opacity: 0.15; + opacity: 0; } 33% { opacity: 0.35; @@ -2359,7 +2361,7 @@ @keyframes rightPulse { 0%, 100% { - opacity: 0.15; + opacity: 0; } 33% { opacity: 0.35; From d12547cf10100f4c1721d1e5ec7dffaef80ece2c Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 10 Nov 2025 11:33:04 +0530 Subject: [PATCH 286/300] add: refresh support. --- .../table-[table]/+page.svelte | 103 +++++++++++++----- 1 file changed, 77 insertions(+), 26 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index df77376faa..38e04ff9bf 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -26,16 +26,24 @@ import { addNotification } from '$lib/stores/notifications'; import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { isSmallViewport } from '$lib/stores/viewport'; - import { IconChevronDown, IconChevronUp, IconPlus } from '@appwrite.io/pink-icons-svelte'; + import { + IconChevronDown, + IconChevronUp, + IconPlus, + IconRefresh + } from '@appwrite.io/pink-icons-svelte'; import type { Models } from '@appwrite.io/console'; import EmptySheet from './layout/emptySheet.svelte'; import CreateRow from './rows/create.svelte'; import { onDestroy } from 'svelte'; import { isCloud } from '$lib/system'; import { Empty as SuggestionsEmptySheet, tableColumnSuggestions } from '../(suggestions)'; + import { invalidate } from '$app/navigation'; + import { Dependencies } from '$lib/constants'; export let data: PageData; + let isRefreshing = false; let showImportCSV = false; // todo: might need a type fix here. @@ -147,36 +155,66 @@ Filters - - - {#if !$isSmallViewport} + + + {#if !$isSmallViewport} + - - {/if} + + + + + + Refresh + + {/if} + {#if $isSmallViewport} @@ -282,4 +320,17 @@ width: 32px !important; height: 32px !important; } + + :global(.rotating) { + animation: rotate 1s linear infinite; + } + + @keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } + } From be635788f1ed11c70ad8cb52b2cad909d343d1c5 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 10 Nov 2025 11:42:33 +0530 Subject: [PATCH 287/300] fix: disable logic. --- .../databases/database-[database]/table-[table]/+page.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 38e04ff9bf..f99cf9d32f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -197,7 +197,9 @@ icon size="s" secondary - disabled={isRefreshing || !data.rows.total} + disabled={isRefreshing || + !data.rows.total || + !(hasColumns && hasValidColumns)} class="small-button-dimensions" on:click={async () => { isRefreshing = true; From b0ead443e1bd0ce042fcfc7436c97f8d9da5bc30 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 10 Nov 2025 11:51:15 +0530 Subject: [PATCH 288/300] address comment. --- .../databases/database-[database]/table-[table]/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index f99cf9d32f..5cb7f1ec43 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -207,8 +207,8 @@ isRefreshing = false; }}>
+ style:line-height="0px" + class:rotating={isRefreshing}>
From c6cd27debeae074b47a45ef9754c22131469f807 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 10 Nov 2025 11:52:06 +0530 Subject: [PATCH 289/300] lint. --- .../databases/database-[database]/table-[table]/+page.svelte | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 5cb7f1ec43..57811ebb60 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -206,9 +206,7 @@ await invalidate(Dependencies.TABLE); isRefreshing = false; }}> -
+
From aea5fe4cba37bbcf7f2a1b60db3e58ed5c043504 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Mon, 10 Nov 2025 07:28:42 +0000 Subject: [PATCH 290/300] Make hostname field optional with localhost default in Web platform creation --- .../overview/platforms/createWeb.svelte | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 8d7eac9e26..596af0c662 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -11,8 +11,7 @@ Fieldset, InlineCode, Card, - Tooltip, - Tag + Tooltip } from '@appwrite.io/pink-svelte'; import { Button, Form, InputText } from '$lib/elements/forms'; import { @@ -25,8 +24,7 @@ IconInfo, IconExternalLink, IconAngular, - IconJs, - IconPlus + IconJs } from '@appwrite.io/pink-icons-svelte'; import { page } from '$app/state'; import { onMount } from 'svelte'; @@ -70,8 +68,6 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p let hostname = $state(null); let hostnameError = $state(false); - const suggestedHostnames = ['localhost', '127.0.0.1', '0.0.0.0']; - let frameworks: Array = [ { key: 'svelte', @@ -162,7 +158,9 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p ); async function createWebPlatform() { - hostnameError = hostname !== '' ? !new RegExp(extendedHostnameRegex).test(hostname) : null; + const trimmedHostname = hostname?.trim() || ''; + const finalHostname = trimmedHostname !== '' ? trimmedHostname : 'localhost'; + hostnameError = !new RegExp(extendedHostnameRegex).test(finalHostname); if (hostnameError) { return; @@ -175,7 +173,7 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p type: PlatformType.Web, name: `${selectedFramework.label} app`, key: key, - hostname: hostname === '' ? undefined : hostname + hostname: finalHostname }); isPlatformCreated = true; @@ -264,7 +262,6 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p label="Hostname" placeholder="localhost" autofocus - required error={hostnameError && 'Please enter a valid hostname'} bind:value={hostname}> @@ -276,17 +273,6 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p - - {#each suggestedHostnames as h} - (hostname = h)}> - - {h} - - {/each} -
From 82438c2a9c3a0346ce16aa2effe10b820cac3d16 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Mon, 10 Nov 2025 07:37:56 +0000 Subject: [PATCH 291/300] simplified logic --- .../overview/platforms/createWeb.svelte | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 596af0c662..44f3a6e2e8 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -68,6 +68,8 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p let hostname = $state(null); let hostnameError = $state(false); + const hostnameRegex = new RegExp(extendedHostnameRegex); + let frameworks: Array = [ { key: 'svelte', @@ -158,9 +160,8 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p ); async function createWebPlatform() { - const trimmedHostname = hostname?.trim() || ''; - const finalHostname = trimmedHostname !== '' ? trimmedHostname : 'localhost'; - hostnameError = !new RegExp(extendedHostnameRegex).test(finalHostname); + const finalHostname = hostname?.trim() || 'localhost'; + hostnameError = !hostnameRegex.test(finalHostname); if (hostnameError) { return; From bf983f1b39b2a90636111b8219a08f565c5e414f Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Mon, 10 Nov 2025 07:51:49 +0000 Subject: [PATCH 292/300] revert --- .../overview/platforms/createWeb.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte index 44f3a6e2e8..e4a98a6a99 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -68,8 +68,6 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p let hostname = $state(null); let hostnameError = $state(false); - const hostnameRegex = new RegExp(extendedHostnameRegex); - let frameworks: Array = [ { key: 'svelte', @@ -160,6 +158,7 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p ); async function createWebPlatform() { + const hostnameRegex = new RegExp(extendedHostnameRegex); const finalHostname = hostname?.trim() || 'localhost'; hostnameError = !hostnameRegex.test(finalHostname); From 4d4bac863fa087f90eee30c0e0538a9cf27eb62e Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 10 Nov 2025 14:21:03 +0530 Subject: [PATCH 293/300] add: triggered based focus. --- .../table-[table]/+layout.svelte | 114 ++++++++++++------ .../table-[table]/layout/sidesheet.svelte | 2 +- .../table-[table]/rows/edit.svelte | 8 +- .../table-[table]/spreadsheet.svelte | 9 +- .../table-[table]/store.ts | 4 +- 5 files changed, 95 insertions(+), 42 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index 8eeafff276..07f9bd7819 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -72,9 +72,8 @@ import { chunks } from '$lib/helpers/array'; import { Submit, trackEvent } from '$lib/actions/analytics'; - import IndexesSuggestions from '../(suggestions)/indexes.svelte'; - import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)'; import { isTabletViewport } from '$lib/stores/viewport'; + import IndexesSuggestions from '../(suggestions)/indexes.svelte'; let editRow: EditRow; let editRelatedRow: EditRelatedRow; @@ -87,6 +86,33 @@ let columnCreationHandler: ((response: RealtimeResponse) => void) | null = null; + // manual management of focus is needed! + const autoFocusAction = (node: HTMLElement, shouldFocus: boolean) => { + const button = node.querySelector('button'); + if (!button) return; + + const handleBlur = () => button.classList.remove('focus-visible'); + const applyFocus = (focus: boolean) => { + if (focus) { + button.classList.add('focus-visible'); + button.focus(); + } else { + button.classList.remove('focus-visible'); + } + }; + + button.addEventListener('blur', handleBlur); + applyFocus(shouldFocus); + + return { + update: applyFocus, + destroy() { + button.removeEventListener('blur', handleBlur); + button.classList.remove('focus-visible'); + } + }; + }; + onMount(() => { expandTabs.set(preferences.getKey('tableHeaderExpanded', true)); @@ -464,39 +490,47 @@ {@const isLastRow = currentIndex >= rows.length - 1} {#if !$isTabletViewport} - - - + {@const shouldFocusPrev = !$databaseRowSheetOptions.autoFocus && !isFirstRow} + {@const shouldFocusNext = + !$databaseRowSheetOptions.autoFocus && isFirstRow && !isLastRow} + +
+ +
+ +
+ +
{/if} {/snippet} @@ -504,7 +538,8 @@ + bind:rowId={$databaseRowSheetOptions.rowId} + autoFocus={$databaseRowSheetOptions.autoFocus} /> {/key} @@ -574,3 +609,10 @@ + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/layout/sidesheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/layout/sidesheet.svelte index 5b77be33d2..afe51be679 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/layout/sidesheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/layout/sidesheet.svelte @@ -92,7 +92,7 @@
{#if topEndActions} - + {@render topEndActions()} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte index 0754f64201..ab3879962d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte @@ -25,10 +25,12 @@ let { row = $bindable(), - rowId = $bindable(null) + rowId = $bindable(null), + autoFocus = true }: { row?: Models.Row | null; rowId?: string | null; + autoFocus?: boolean; } = $props(); let loading = $state(false); @@ -82,7 +84,9 @@ $effect(() => { if (row) { work = initWork(); - requestAnimationFrame(() => focusFirstInput()); + if (autoFocus) { + requestAnimationFrame(() => focusFirstInput()); + } } else { work = null; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 989d5e653c..5e3428bd47 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -809,6 +809,7 @@ const focusedRow = $paginatedRows.items.find((row) => row.$id === focusedRowId); previouslyFocusedElement = document.activeElement; + $databaseRowSheetOptions.autoFocus = false; onSelectSheetOption('update', null, 'row', focusedRow); }}> @@ -935,6 +936,7 @@ hide(); previouslyFocusedElement = document.activeElement; + $databaseRowSheetOptions.autoFocus = false; onSelectSheetOption( 'update', null, @@ -985,8 +987,10 @@ - onSelectSheetOption(option, null, 'row', row)} + onSelect={(option) => { + $databaseRowSheetOptions.autoFocus = true; + onSelectSheetOption(option, null, 'row', row); + }} onVisibilityChanged={(visible) => { canShowDatetimePopover = !visible; }}> @@ -1113,6 +1117,7 @@ rowColumn ); } else { + $databaseRowSheetOptions.autoFocus = true; onSelectSheetOption('update', null, 'row', row); } }} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts index 3f51a93def..6c6a284890 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts @@ -72,6 +72,7 @@ export const databaseRowSheetOptions = writable< rowId?: string; rows: Models.Row[]; rowIndex?: number; + autoFocus?: boolean; } >({ title: null, @@ -79,7 +80,8 @@ export const databaseRowSheetOptions = writable< row: null, rowId: null, // for loading from a given id rows: [], - rowIndex: -1 + rowIndex: -1, + autoFocus: true }); export const databaseRelatedRowSheetOptions = writable< From ad3e23ec2d995e5117d950f332d298fa408b614a Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 11 Nov 2025 19:56:07 +0530 Subject: [PATCH 294/300] cleanup. --- .../(suggestions)/empty.svelte | 289 +++++++----------- 1 file changed, 115 insertions(+), 174 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 02c06bec1f..f7c0b189d2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -115,8 +115,6 @@ let hasTransitioned = $state(false); let scrollAnimationFrame: number | null = null; - let animation: 'legacy' | 'new' = 'new'; - let creatingColumns = $state(false); let selectedColumnId = $state(null); let previousColumnId = $state(null); @@ -640,8 +638,6 @@ await sleep(NOTIFICATION_AND_MOCK_DELAY); suggestedColumns = mockSuggestions; } else { - await sleep(5000); // for design review on stage - suggestedColumns = (await sdk .forProject(page.params.region, page.params.project) .console.suggestColumns({ @@ -1292,8 +1288,7 @@ bind:this={rangeOverlayEl} class="columns-range-overlay" class:no-transition={hasTransitioned && customColumns.length > 0} - class:thinking={$tableColumnSuggestions.thinking || creatingColumns} - data-anim={animation}> + class:thinking={$tableColumnSuggestions.thinking || creatingColumns}>
{@render edgeGradients('left')} {@render edgeGradients('right')} @@ -2033,170 +2028,122 @@ overflow: hidden; border-radius: var(--border-radius-S, 8px); - /* Legacy shimmer animation */ - &[data-anim='legacy'] { - margin-block-start: 2px; - height: calc(100% - 4px); - box-shadow: - 0 0 0 var(--border-width-l, 2px) #fd366e, - inset 0 0 0 1px color-mix(in oklab, #fe9567 20%, transparent); - - &::after { - content: ''; - position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient( - 90deg, - transparent, - rgba(255, 255, 255, 0.8), - transparent - ); - animation: legacy-shimmer 2s cubic-bezier(0.25, 0.46, 0.45, 0.94) infinite; - } - - .inner-glow-wrapper { - display: none; - } + background: transparent; + + --border-pink: rgba(253, 54, 110, 0.4); + --border-orange: rgba(254, 149, 103, 0.25); + + &::before { + content: ''; + position: absolute; + inset: 0; + border-radius: inherit; + padding: 2px; + background: linear-gradient( + 120deg, + var(--border-pink) 0%, + var(--border-orange) 50%, + var(--border-pink) 100% + ); + background-size: 300% 300%; + pointer-events: none; + box-sizing: border-box; + animation: borderGlow 12s ease-in-out infinite; + -webkit-mask: + linear-gradient(#fff 0 0) content-box, + linear-gradient(#fff 0 0); + -webkit-mask-composite: xor; + mask: + linear-gradient(#fff 0 0) content-box, + linear-gradient(#fff 0 0); + mask-composite: exclude; } - /* New animation with border glow and edge pulses */ - &[data-anim='new'] { - /* bg wash: 3% subtle | 7% default */ - /*background: rgba(253, 54, 110, 0.03); - @supports (background: color-mix(in oklab, #fd366e 1%, transparent)) { - background: linear-gradient( - 135deg, - color-mix(in oklab, #fd366e 3%, transparent) 0%, - color-mix(in oklab, #fe9567 3%, transparent) 100% - ); - }*/ - - background: transparent; - - /* border colors: pink 0.4 | orange 0.25 */ - --border-pink: rgba(253, 54, 110, 0.4); - --border-orange: rgba(254, 149, 103, 0.25); - - /* border ring: thickness 2px | speed 12s | size 300% */ - &::before { - content: ''; - position: absolute; - inset: 0; - border-radius: inherit; - padding: 2px; - background: linear-gradient( - 120deg, - var(--border-pink) 0%, - var(--border-orange) 50%, - var(--border-pink) 100% - ); - background-size: 300% 300%; - pointer-events: none; - box-sizing: border-box; - animation: borderGlow 12s ease-in-out infinite; - -webkit-mask: - linear-gradient(#fff 0 0) content-box, - linear-gradient(#fff 0 0); - -webkit-mask-composite: xor; - mask: - linear-gradient(#fff 0 0) content-box, - linear-gradient(#fff 0 0); - mask-composite: exclude; - } - - /* shine sweep: opacity 0.5 light / 0.02 dark | blur 80px | speed 2s | angle -25deg */ - &::after { - content: ''; - position: absolute; - top: -50%; - left: -50%; - width: 200%; - height: 200%; - background: linear-gradient( - 145deg, - rgba(255, 255, 255, 0) 45%, - rgba(255, 255, 255, 0.5) 50%, - rgba(255, 255, 255, 0) 55% - ); - transform: rotate(-25deg); - filter: blur(80px); - pointer-events: none; - animation: shine 2s linear infinite; - } + &::after { + content: ''; + position: absolute; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: linear-gradient( + 145deg, + rgba(255, 255, 255, 0) 45%, + rgba(255, 255, 255, 0.5) 50%, + rgba(255, 255, 255, 0) 55% + ); + transform: rotate(-25deg); + filter: blur(80px); + pointer-events: none; + animation: shine 2s linear infinite; + } - .inner-glow-wrapper { - position: absolute; - inset: 2px; - border-radius: calc(var(--border-radius-S, 8px) - 2px); - overflow: hidden; - } + .inner-glow-wrapper { + position: absolute; + inset: 2px; + border-radius: calc(var(--border-radius-S, 8px) - 2px); + overflow: hidden; + } - /* edge glows container */ - .edge-glow { - position: absolute; - inset: 0; - pointer-events: none; - border-radius: inherit; - } + .edge-glow { + position: absolute; + inset: 0; + pointer-events: none; + border-radius: inherit; + } - /* edge pulses: speed 6s | opacity 0.15-0.35 (see keyframes) | config in snippet */ - .edge-glow.left .grad, - .edge-glow.right .grad { - position: absolute; - inset: 0; - border-radius: inherit; - pointer-events: none; - } + .edge-glow.left .grad, + .edge-glow.right .grad { + position: absolute; + inset: 0; + border-radius: inherit; + pointer-events: none; + } - .edge-glow.left .grad { - animation: leftPulse 6s ease-in-out infinite backwards; - } + .edge-glow.left .grad { + animation: leftPulse 6s ease-in-out infinite backwards; + } - .edge-glow.right .grad { - animation: rightPulse 6s ease-in-out infinite backwards; - } + .edge-glow.right .grad { + animation: rightPulse 6s ease-in-out infinite backwards; + } - /* top/bottom ambient: opacity 0.05 | spread 25% | static (no animation) */ - .edge-glow.top { - background: - radial-gradient( - circle at 20% 0%, - rgba(254, 149, 103, 0.05) 0%, - transparent 25% - ), - radial-gradient( - circle at 50% 0%, - rgba(253, 54, 110, 0.05) 0%, - transparent 25% - ), - radial-gradient( - circle at 80% 0%, - rgba(253, 54, 110, 0.05) 0%, - transparent 25% - ); - } + .edge-glow.top { + background: + radial-gradient( + circle at 20% 0%, + rgba(254, 149, 103, 0.05) 0%, + transparent 25% + ), + radial-gradient( + circle at 50% 0%, + rgba(253, 54, 110, 0.05) 0%, + transparent 25% + ), + radial-gradient( + circle at 80% 0%, + rgba(253, 54, 110, 0.05) 0%, + transparent 25% + ); + } - .edge-glow.bottom { - background: - radial-gradient( - circle at 20% 100%, - rgba(254, 149, 103, 0.05) 0%, - transparent 25% - ), - radial-gradient( - circle at 50% 100%, - rgba(253, 54, 110, 0.05) 0%, - transparent 25% - ), - radial-gradient( - circle at 80% 100%, - rgba(254, 149, 103, 0.05) 0%, - transparent 25% - ); - } + .edge-glow.bottom { + background: + radial-gradient( + circle at 20% 100%, + rgba(254, 149, 103, 0.05) 0%, + transparent 25% + ), + radial-gradient( + circle at 50% 100%, + rgba(253, 54, 110, 0.05) 0%, + transparent 25% + ), + radial-gradient( + circle at 80% 100%, + rgba(254, 149, 103, 0.05) 0%, + transparent 25% + ); } } } @@ -2403,19 +2350,13 @@ --columns-range-pink-border-color: rgba(253, 54, 110, 0.12) !important; } - :global(.theme-dark) .columns-range-overlay.thinking { - &[data-anim='legacy']::after { - background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.04), transparent); - } - - &[data-anim='new']::after { - background: linear-gradient( - 145deg, - rgba(255, 255, 255, 0) 45%, - rgba(255, 255, 255, 0.02) 50%, - rgba(255, 255, 255, 0) 55% - ); - } + :global(.theme-dark) .columns-range-overlay.thinking::after { + background: linear-gradient( + 145deg, + rgba(255, 255, 255, 0) 45%, + rgba(255, 255, 255, 0.02) 50%, + rgba(255, 255, 255, 0) 55% + ); } :global(.cell-editor) { From cd445161e0cccddc38b276460c489f23981b4f23 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 12 Nov 2025 01:28:56 +0000 Subject: [PATCH 295/300] Fix: refresh when organization dependency change before: Invalidating organization was not refreshing the page because it kept local copy of organization now: Invalidating organization correctly refreshes the page --- .../organization-[organization]/billing/+page.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/organization-[organization]/billing/+page.svelte b/src/routes/(console)/organization-[organization]/billing/+page.svelte index e749892505..3eb6676907 100644 --- a/src/routes/(console)/organization-[organization]/billing/+page.svelte +++ b/src/routes/(console)/organization-[organization]/billing/+page.svelte @@ -25,7 +25,9 @@ import type { PageData } from './$types'; export let data: PageData; - let organization = data.organization; + + // Reactive statement to update organization when data changes + $: organization = data.organization; // why are these reactive? $: defaultPaymentMethod = data?.paymentMethods?.paymentMethods?.find( From c6aae23ef1df2e8ce05e032706deef6f0855dcd2 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 12 Nov 2025 16:02:15 +0530 Subject: [PATCH 296/300] add: default null badge; update: cell class name. --- .../database-[database]/(suggestions)/empty.svelte | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index 7a5602eb70..e249da70cf 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -635,7 +635,7 @@ try { if (VARS.MOCK_AI_SUGGESTIONS) { /* animation */ - await sleep(NOTIFICATION_AND_MOCK_DELAY * 100); + await sleep(NOTIFICATION_AND_MOCK_DELAY); suggestedColumns = mockSuggestions; } else { suggestedColumns = (await sdk @@ -1772,7 +1772,15 @@ } }}> {#if !column.custom && row} - {row[column.id] ?? ''} + {@const rowData = row[column.id]} + {@const isNullOrUndefined = rowData === null || typeof rowData === 'object'} + + {#if isNullOrUndefined} + + {:else} + {rowData} + {/if} + {/if} {/snippet} @@ -1990,7 +1998,7 @@ height: 100%; cursor: pointer; - & :global(.fake-cell) { + & :global(.suggestions-empty-fake-cell) { min-height: 40px; position: relative; align-items: center; From 85b366257b5573889c68bc45d59a72785a097dfa Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 12 Nov 2025 16:08:56 +0530 Subject: [PATCH 297/300] fix: should be `undefined`. --- .../databases/database-[database]/(suggestions)/empty.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index e249da70cf..d8991e516c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1773,7 +1773,7 @@ }}> {#if !column.custom && row} {@const rowData = row[column.id]} - {@const isNullOrUndefined = rowData === null || typeof rowData === 'object'} + {@const isNullOrUndefined = rowData === null || typeof rowData === 'undefined'} {#if isNullOrUndefined} From 931782a6c1f7b88017893bdc97c301986f559200 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 12 Nov 2025 17:14:59 +0530 Subject: [PATCH 298/300] fix: ignore `isActions`. --- .../databases/database-[database]/(suggestions)/empty.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index d8991e516c..22839e48a1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -1773,9 +1773,10 @@ }}> {#if !column.custom && row} {@const rowData = row[column.id]} + {@const isActions = column.id === 'actions'} {@const isNullOrUndefined = rowData === null || typeof rowData === 'undefined'} - {#if isNullOrUndefined} + {#if isNullOrUndefined && !isActions} {:else} {rowData} From 5d222e08c95d42b3babc6570a4d2053f356edd35 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 12 Nov 2025 17:25:33 +0530 Subject: [PATCH 299/300] update: disable buttons. --- src/lib/components/viewSelector.svelte | 6 ++++-- .../table-[table]/+page.svelte | 16 ++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index 7523c6f67e..e20b8ca1fa 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -21,6 +21,7 @@ hideColumns?: boolean; allowNoColumns?: boolean; showAnyway?: boolean; + disableButton?: boolean; } let { @@ -32,7 +33,8 @@ hideView = false, hideColumns = false, allowNoColumns = false, - showAnyway = false + showAnyway = false, + disableButton = false }: Props = $props(); let showCountBadge = $state(false); @@ -70,7 +72,7 @@ icon={onlyIcon} onclick={toggle} variant="secondary" - disabled={!$columns.length && showAnyway} + disabled={(!$columns.length && showAnyway) || disableButton} class={onlyIcon && !$isSmallViewport ? 'width-fix' : undefined} badge={showCountBadge ? selectedColumnsNumber.toString() : undefined}> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 1a5a2e13a6..bc556e3ed7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -99,6 +99,8 @@ $tableColumnSuggestions.table && $tableColumnSuggestions.table.id === page.params.table; + $: disableButton = canShowSuggestionsSheet; + async function onSelect(file: Models.File, localFile = false) { $isCsvImportInProgress = true; @@ -146,7 +148,8 @@ columns={tableColumns} hideView showAnyway - isCustomTable /> + isCustomTable + {disableButton} />
Columns @@ -157,7 +160,7 @@ onlyIcon query={data.query} columns={filterColumns} - disabled={!(hasColumns && hasValidColumns)} + disabled={!(hasColumns && hasValidColumns) || disableButton} analyticsSource="database_tables" /> Filters @@ -176,7 +179,7 @@ @@ -184,7 +187,7 @@