From 5889e8c6deb6e134fca34431de822b717b9936a5 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Mon, 27 Oct 2025 18:24:49 +0530 Subject: [PATCH 01/35] feat: add build timeout handling to prevent stuck build UI --- package.json | 2 +- pnpm-lock.yaml | 10 ++-- src/lib/helpers/buildTimeout.ts | 51 +++++++++++++++++++ .../deployment-[deployment]/+page.svelte | 21 +++++--- .../function-[function]/table.svelte | 17 ++++--- .../(components)/deploymentActionMenu.svelte | 7 ++- .../sites/(components)/logs.svelte | 26 +++++++--- .../sites/(components)/logsTimer.svelte | 11 ++-- .../sites/(components)/siteCard.svelte | 15 ++++-- .../deployment-[deployment]/+page.svelte | 15 ++++-- .../site-[site]/deployments/table.svelte | 12 +++-- 11 files changed, 146 insertions(+), 41 deletions(-) create mode 100644 src/lib/helpers/buildTimeout.ts diff --git a/package.json b/package.json index 8d1a0d1ba..199f031c5 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@fe3277e", + "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755", "@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 463bb83f3..599224abd 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@fe3277e - version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@fe3277e + specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755 + version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755 '@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@fe3277e': - resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@fe3277e} + '@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} 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@fe3277e': {} + '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2755': {} '@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.25.3)': dependencies: diff --git a/src/lib/helpers/buildTimeout.ts b/src/lib/helpers/buildTimeout.ts new file mode 100644 index 000000000..b57a020fd --- /dev/null +++ b/src/lib/helpers/buildTimeout.ts @@ -0,0 +1,51 @@ +import type { Models } from '@appwrite.io/console'; + +/** + * Checks if a build has exceeded the maximum build timeout duration + */ +export function isBuildTimedOut( + createdAt: string, + status: string, + timeoutSeconds: number +): boolean { + if (!['waiting', 'processing', 'building'].includes(status)) { + return false; + } + + if (!timeoutSeconds || timeoutSeconds <= 0) { + return false; + } + + const now = new Date(); + const created = new Date(createdAt); + const elapsedSeconds = Math.floor((now.getTime() - created.getTime()) / 1000); + + return elapsedSeconds > timeoutSeconds; +} + +/** + * Gets the effective status for a build, considering timeout + */ +export function getEffectiveBuildStatus( + originalStatus: string, + createdAt: string, + timeoutSeconds: number +): string { + if (isBuildTimedOut(createdAt, originalStatus, timeoutSeconds)) { + return 'failed'; + } + return originalStatus; +} + +/** + * Helper to get timeout value from console variables + */ +export function getBuildTimeoutSeconds( + consoleVariables: Models.ConsoleVariables | undefined +): number { + if (!consoleVariables?._APP_COMPUTE_BUILD_TIMEOUT) { + return 0; + } + const timeout = parseInt(String(consoleVariables._APP_COMPUTE_BUILD_TIMEOUT), 10); + return isNaN(timeout) ? 0 : timeout; +} 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 83247cdb2..636d296fe 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,6 +24,8 @@ } 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 { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store'; import { timer } from '$lib/actions/timer'; import { app } from '$lib/stores/app'; import { IconDotsHorizontal, IconRefresh } from '@appwrite.io/pink-icons-svelte'; @@ -36,12 +38,19 @@ import { readOnly } from '$lib/stores/billing'; import RedeployModal from '../(modals)/redeployModal.svelte'; - export let data; + let { data } = $props(); - let showDelete = false; - let showCancel = false; - let showActivate = false; - let showRedeploy = false; + let effectiveStatus = $derived( + getEffectiveBuildStatus( + data.deployment.status, + data.deployment.$createdAt, + getBuildTimeoutSeconds($regionalConsoleVariables) + ) + ); + let showDelete = $state(false); + let showCancel = $state(false); + let showActivate = $state(false); + let showRedeploy = $state(false); onMount(() => { const unsubscribe = sdk.forConsole.client.subscribe( @@ -84,7 +93,7 @@ {#snippet footer()} - {#if data.deployment.status === 'processing' || data.deployment.status === 'building' || data.deployment.status === 'waiting'} + {#if effectiveStatus === 'processing' || effectiveStatus === 'building' || effectiveStatus === 'waiting'} + {@const effectiveStatus = getEffectiveBuildStatus( + deployment.status, + deployment.$createdAt, + getBuildTimeoutSeconds($regionalConsoleVariables) + )} {#if !inCard}
@@ -72,7 +77,7 @@
Source is empty
{/if} - {#if deployment?.status === 'ready' && deployment?.$id !== activeDeployment} + {#if effectiveStatus === 'ready' && deployment?.$id !== activeDeployment} { @@ -84,7 +89,7 @@ Activate {/if} - {#if deployment?.status === 'ready' || deployment?.status === 'failed' || deployment?.status === 'building'} + {#if effectiveStatus === 'ready' || effectiveStatus === 'failed' || effectiveStatus === 'building'} @@ -114,11 +119,6 @@ {/if} - {@const effectiveStatus = getEffectiveBuildStatus( - deployment.status, - deployment.$createdAt, - getBuildTimeoutSeconds($regionalConsoleVariables) - )} {#if effectiveStatus === 'processing' || effectiveStatus === 'building' || effectiveStatus === 'waiting'} 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 075c746c7..3387336af 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 @@ -62,7 +62,7 @@ {#snippet footer()} - {#if deployment?.status === 'ready' && data.proxyRuleList?.total} + {#if effectiveStatus === 'ready' && data.proxyRuleList?.total} @@ -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 16/35] 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 eb073c718..f8076f1b5 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 17/35] 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 54e8ec053..ede26618b 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 18/35] 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 46b6a9bb3..a96094231 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 19/35] 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 5703b6bb3..39467b17b 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 20/35] 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 a96094231..9fb392d4d 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 39467b17b..b0dad2478 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 21/35] 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 b0dad2478..4a63db4fe 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 22/35] 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 9fb392d4d..bc557f764 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 23/35] 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 9fb392d4d..e240db367 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 24/35] 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 eed2e0127..c70fd5f66 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 25/35] 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 b479c7fc3..6d1a68d6c 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 26/35] 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 9c20e38ea..0e3f4cad8 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 27/35] 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 6d1a68d6c..009179e3b 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 28/35] 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 009179e3b..5611b447f 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 29/35] 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 9c20e38ea..43570707d 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 830e89504..a05369a8a 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 5f56249ff..57791bdd7 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 6c6aa7045..ac39f7e89 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 30/35] 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 12dcb1a76..721a577bd 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 31/35] 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 721a577bd..fdc92f8cf 100644 --- a/src/routes/(console)/onboarding/create-project/+page.svelte +++ b/src/routes/(console)/onboarding/create-project/+page.svelte @@ -1,5 +1,6 @@