From 358ab5959d126335b8b2e498729fcf0c88b80d72 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 25 Oct 2025 15:05:45 +0530 Subject: [PATCH 1/5] update: show correct info for required<>arrays. --- .../table-[table]/columns/boolean.svelte | 23 +++------ .../table-[table]/columns/datetime.svelte | 21 ++------ .../table-[table]/columns/email.svelte | 22 ++------ .../table-[table]/columns/enum.svelte | 24 +++------ .../table-[table]/columns/float.svelte | 22 ++------ .../table-[table]/columns/integer.svelte | 22 ++------ .../table-[table]/columns/ip.svelte | 22 ++------ .../columns/requiredArrayCheckboxes.svelte | 50 +++++++++++++++++++ .../table-[table]/columns/string.svelte | 17 +------ .../table-[table]/columns/url.svelte | 22 ++------ 10 files changed, 93 insertions(+), 152 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/requiredArrayCheckboxes.svelte 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 cd09096a4..dbaf84823 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 @@ -38,6 +38,9 @@ + + +
+ +
+ + + Required cannot be selected because array columns may contain more than one value. + +
+ + +
+ +
+ + + {#if editing} + Array cannot be selected to avoid data incompatibility. + {:else} + Array cannot be selected because required columns must be populated in all rows with a + single value. + {/if} + +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte index cc631ae82..e43c89da2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/string.svelte @@ -44,6 +44,7 @@ import { currentPlan } from '$lib/stores/organization'; import { createConservative } from '$lib/helpers/stores'; import { ActionMenu, Selector } from '@appwrite.io/pink-svelte'; + import RequiredArrayCheckboxes from './requiredArrayCheckboxes.svelte'; import { InputNumber, InputText, InputTextarea } from '$lib/elements/forms'; import { Popover, Layout, Tag, Typography, Link } from '@appwrite.io/pink-svelte'; @@ -105,21 +106,7 @@ disabled={data.required || data.array} nullable={!data.required && !data.array} /> - - - +
import { InputURL } from '$lib/elements/forms'; + import { createConservative } from '$lib/helpers/stores'; + import RequiredArrayCheckboxes from './requiredArrayCheckboxes.svelte'; export let data: Partial; export let editing = false; - import { createConservative } from '$lib/helpers/stores'; - import { Selector } from '@appwrite.io/pink-svelte'; - let savedDefault = data.default; function handleDefaultState(hideDefault: boolean) { @@ -64,6 +63,7 @@ array: false, ...data }); + $: listen(data); $: handleDefaultState($required || $array); @@ -76,17 +76,5 @@ bind:value={data.default} disabled={data.required || data.array} nullable={!data.required && !data.array} /> - - + + From cbba5b9a53b510eafa9f18b74bb667587a8419a4 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 25 Oct 2025 15:44:48 +0530 Subject: [PATCH 2/5] bump: playwright for cve. --- package.json | 2 +- pnpm-lock.yaml | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index e698497a1..e81d3d510 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "@eslint/js": "^9.31.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.5", - "@playwright/test": "^1.51.1", + "@playwright/test": "^1.55.1", "@sveltejs/adapter-static": "^3.0.8", "@sveltejs/kit": "^2.42.1", "@sveltejs/vite-plugin-svelte": "^5.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c66935adb..62a3e0c69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,8 +97,8 @@ importers: specifier: ^0.86.5 version: 0.86.5(svelte@5.25.3) '@playwright/test': - specifier: ^1.51.1 - version: 1.51.1 + specifier: ^1.55.1 + version: 1.56.1 '@sveltejs/adapter-static': specifier: ^3.0.8 version: 3.0.8(@sveltejs/kit@2.42.1(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@7.0.6(@types/node@22.13.14)(sass@1.86.0)))(svelte@5.25.3)(vite@7.0.6(@types/node@22.13.14)(sass@1.86.0))) @@ -993,8 +993,8 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} - '@playwright/test@1.51.1': - resolution: {integrity: sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==} + '@playwright/test@1.56.1': + resolution: {integrity: sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==} engines: {node: '>=18'} hasBin: true @@ -2830,13 +2830,13 @@ packages: resolution: {integrity: sha512-hMhneYm3GCPyQon88SZrVJx+LlqhM1kZFQbuAgXPoh/Az2YvO1B6bitT9qlhpiTdJlsT5lsr3gPmzoVjb5CDXA==} engines: {node: '>=10'} - playwright-core@1.51.1: - resolution: {integrity: sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==} + playwright-core@1.56.1: + resolution: {integrity: sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==} engines: {node: '>=18'} hasBin: true - playwright@1.51.1: - resolution: {integrity: sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==} + playwright@1.56.1: + resolution: {integrity: sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==} engines: {node: '>=18'} hasBin: true @@ -4453,9 +4453,9 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true - '@playwright/test@1.51.1': + '@playwright/test@1.56.1': dependencies: - playwright: 1.51.1 + playwright: 1.56.1 '@polka/url@1.0.0-next.28': {} @@ -6486,11 +6486,11 @@ snapshots: plausible-tracker@0.3.9: {} - playwright-core@1.51.1: {} + playwright-core@1.56.1: {} - playwright@1.51.1: + playwright@1.56.1: dependencies: - playwright-core: 1.51.1 + playwright-core: 1.56.1 optionalDependencies: fsevents: 2.3.2 From 788097c854fc26af7ab770e9e68a9b2037bac5b5 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 25 Oct 2025 16:11:45 +0530 Subject: [PATCH 3/5] fix: slot in a svelte5 environment on `siteCard` comp. migrate: from `client.subscribe` to `realtime.subscribe`. misc: use `resolve` for url. --- src/lib/components/csvImportBox.svelte | 2 +- src/lib/stores/sdk.ts | 6 ++- .../executions/+page.svelte | 2 +- .../overview/platforms/createAndroid.svelte | 2 +- .../overview/platforms/createApple.svelte | 2 +- .../overview/platforms/createFlutter.svelte | 2 +- .../platforms/createReactNative.svelte | 2 +- .../overview/platforms/createWeb.svelte | 2 +- .../sites/(components)/siteCard.svelte | 9 ++-- .../sites/+page.svelte | 2 +- .../sites/create-site/deploying/+page.svelte | 34 ++++++++------- .../sites/create-site/finish/+page.svelte | 43 ++++++++++--------- .../sites/site-[site]/+page.svelte | 6 +-- .../site-[site]/deployments/+layout.svelte | 2 +- .../site-[site]/deployments/+page.svelte | 2 +- .../deployment-[deployment]/+page.svelte | 27 ++++++------ .../sites/site-[site]/logs/+page.svelte | 2 +- 17 files changed, 78 insertions(+), 69 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index ec7a2c9a3..ac8561019 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -169,7 +169,7 @@ migrations.migrations.forEach(updateOrAddItem); }); - return sdk.forConsoleIn(page.params.region).client.subscribe('console', (response) => { + return 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); diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index 2ae897822..9b66f0fee 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -21,7 +21,8 @@ import { Sites, Tokens, TablesDB, - Domains + Domains, + Realtime } from '@appwrite.io/console'; import { Billing } from '../sdk/billing'; import { Backups } from '../sdk/backups'; @@ -90,7 +91,8 @@ function createConsoleSdk(client: Client) { sources: new Sources(client), sites: new Sites(client), domains: new Domains(client), - storage: new Storage(client) + storage: new Storage(client), + realtime: new Realtime(client) }; } 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 b3f43680e..7c4280fc1 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 @@ -16,7 +16,7 @@ export let data; onMount(() => { - return sdk.forConsole.client.subscribe('console', (response) => { + return sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes('functions.*.executions.*')) { invalidate(Dependencies.EXECUTIONS); } 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 fb5cf62fd..4bccedfb2 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createAndroid.svelte @@ -81,7 +81,7 @@ const val APPWRITE_PUBLIC_ENDPOINT = "${sdk.forProject(page.params.region, page. } onMount(() => { - const unsubscribe = sdk.forConsole.client.subscribe('console', (response) => { + const unsubscribe = sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`projects.${projectId}.ping`)) { connectionSuccessful = true; invalidate(Dependencies.ORGANIZATION); 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 0ee698c84..e87b21026 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createApple.svelte @@ -90,7 +90,7 @@ APPWRITE_PUBLIC_ENDPOINT: "${sdk.forProject(page.params.region, page.params.proj } onMount(() => { - const unsubscribe = sdk.forConsole.client.subscribe('console', (response) => { + const unsubscribe = sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`projects.${projectId}.ping`)) { connectionSuccessful = true; invalidate(Dependencies.ORGANIZATION); 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 312924948..0c0f74d21 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createFlutter.svelte @@ -156,7 +156,7 @@ } onMount(() => { - const unsubscribe = sdk.forConsole.client.subscribe('console', (response) => { + const unsubscribe = sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`projects.${projectId}.ping`)) { connectionSuccessful = true; invalidate(Dependencies.ORGANIZATION); 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 aeba8a381..9b6b4799d 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createReactNative.svelte @@ -117,7 +117,7 @@ EXPO_PUBLIC_APPWRITE_ENDPOINT=${sdk.forProject(page.params.region, page.params.p } onMount(() => { - const unsubscribe = sdk.forConsole.client.subscribe('console', (response) => { + const unsubscribe = sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`projects.${projectId}.ping`)) { connectionSuccessful = true; invalidate(Dependencies.ORGANIZATION); 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 b43acf7e6..87c8acc97 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/createWeb.svelte @@ -202,7 +202,7 @@ ${prefix}APPWRITE_ENDPOINT = "${sdk.forProject(page.params.region, page.params.p } onMount(() => { - const unsubscribe = sdk.forConsole.client.subscribe('console', (response) => { + const unsubscribe = sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`projects.${projectId}.ping`)) { connectionSuccessful = true; invalidate(Dependencies.ORGANIZATION); 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 e8f5c8b3c..6bf425f7d 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/(components)/siteCard.svelte @@ -24,17 +24,20 @@ import { sdk } from '$lib/stores/sdk'; import { capitalize } from '$lib/helpers/string'; import { regionalProtocol } from '$routes/(console)/project-[region]-[project]/store'; + import type { Snippet } from 'svelte'; let { deployment, proxyRuleList, hideQRCode = false, - variant = 'primary' + variant = 'primary', + footer }: { deployment: Models.Deployment; proxyRuleList: Models.ProxyRuleList; hideQRCode?: boolean; variant?: 'primary' | 'secondary'; + footer?: Snippet; } = $props(); let show = $state(false); @@ -207,13 +210,13 @@
- {#if $$slots.footer} + {#if footer} - + {@render footer?.()} {/if}
diff --git a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte index 17022e7d7..e1eb6bb66 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/+page.svelte @@ -49,7 +49,7 @@ $updateCommandGroupRanks({ sites: 1000 }); onMount(() => { - return sdk.forConsole.client.subscribe('console', (response) => { + return sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes('sites.*')) { invalidate(Dependencies.SITES); } 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 08f4f1047..92bf157a1 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 @@ -1,6 +1,6 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte index 23e7a2d51..fe788db10 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte @@ -1,5 +1,5 @@ - +
@@ -83,9 +92,9 @@ deployment={data.deployment} proxyRuleList={data.proxyRuleList} hideQRCode> - + {#snippet footer()} - + {/snippet}
@@ -127,7 +136,7 @@ source: 'sites_create_finish' }); }} - href={`${base}/project-${page.params.region}-${page.params.project}/sites/site-${data.site.$id}/domains`}> + href={`${siteRedirectHref}/domains`}> - +
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 97ea0bf4c..adbf16091 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 @@ -19,7 +19,7 @@ let showRollback = false; onMount(() => { - return sdk.forConsole.client.subscribe('console', (response) => { + return sdk.forConsole.realtime.subscribe('console', (response) => { if (response.events.includes(`sites.${page.params.site}.deployments.*`)) { invalidate(Dependencies.SITE); } @@ -31,7 +31,7 @@ {#if data?.deployment && data.deployment.status === 'ready'} - + {#snippet footer()} {#if data.proxyRuleList.total}