From 80bfe3ff3c7188b7cba5858d83c24385aa8fcc8e Mon Sep 17 00:00:00 2001
From: Darshan
Date: Wed, 28 Jan 2026 12:26:19 +0530
Subject: [PATCH 1/8] fix: webhook limit on UI not shown.
---
.../settings/webhooks/+page.svelte | 31 ++++++++++++++-----
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/src/routes/(console)/project-[region]-[project]/settings/webhooks/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/webhooks/+page.svelte
index e7ec5e8d12..da34dceffc 100644
--- a/src/routes/(console)/project-[region]-[project]/settings/webhooks/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/settings/webhooks/+page.svelte
@@ -1,5 +1,5 @@
{#if $canWriteWebhooks}
-
+
+
+
+
+
+ You have reached the maximum number of webhooks for your plan.
+
+
{/if}
From d6a5e73b6d3e986ce28f713aeb663d3ecc32f30d Mon Sep 17 00:00:00 2001
From: Darshan
Date: Wed, 28 Jan 2026 13:28:01 +0530
Subject: [PATCH 2/8] fix: bad bug with stores.
---
.../settings/smtp/+page.svelte | 127 +++++++++---------
1 file changed, 65 insertions(+), 62 deletions(-)
diff --git a/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
index dbcf482070..dac4c8244a 100644
--- a/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/settings/smtp/+page.svelte
@@ -2,7 +2,6 @@
import { CardGrid } from '$lib/components';
import { Button, Form, InputText, InputEmail } from '$lib/elements/forms';
import { Container } from '$lib/layout';
- import { project } from '../../store';
import InputPassword from '$lib/elements/forms/inputPassword.svelte';
import { sdk } from '$lib/stores/sdk';
import { invalidate } from '$app/navigation';
@@ -10,24 +9,32 @@
import { addNotification } from '$lib/stores/notifications';
import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics';
import InputNumber from '$lib/elements/forms/inputNumber.svelte';
- import { base } from '$app/paths';
+ import { resolve } from '$app/paths';
import deepEqual from 'deep-equal';
- import { onMount } from 'svelte';
import { currentPlan } from '$lib/stores/organization';
import { type SMTPSecure } from '@appwrite.io/console';
import InputSelect from '$lib/elements/forms/inputSelect.svelte';
import { getChangePlanUrl } from '$lib/stores/billing';
import { Link, Selector, Alert } from '@appwrite.io/pink-svelte';
+ import type { PageProps } from './$types';
- let enabled = false;
- let senderName: string;
- let senderEmail: string;
- let replyTo: string;
- let host: string;
- let port: number;
- let username: string;
- let password: string;
- let secure: string;
+ const { data }: PageProps = $props();
+
+ const { project } = data;
+
+ let enabled: boolean = $state(false);
+
+ let replyTo: string = $state(null);
+ let senderName: string = $state(null);
+ let senderEmail: string = $state(null);
+
+ let host: string = $state(null);
+ let port: number = $state(null);
+
+ let username: string = $state(null);
+ let password: string = $state(null);
+
+ let secure: string = $state(null);
const options = [
{ value: 'tls', label: 'TLS' },
@@ -35,33 +42,27 @@
{ value: '', label: 'None' }
];
- onMount(() => {
- enabled = $project.smtpEnabled ?? false;
- senderName = $project.smtpSenderName;
- senderEmail = $project.smtpSenderEmail;
- replyTo = $project.smtpReplyTo;
- host = $project.smtpHost;
- port = $project.smtpPort;
- username = $project.smtpUsername;
- password = $project.smtpPassword;
- secure = $project.smtpSecure === 'tls' ? 'tls' : $project.smtpSecure === 'ssl' ? 'ssl' : '';
+ const isButtonDisabled = $derived.by(() => {
+ return deepEqual(
+ { enabled, senderName, senderEmail, replyTo, host, port, username, password, secure },
+ {
+ enabled: project.smtpEnabled,
+ senderName: project.smtpSenderName,
+ senderEmail: project.smtpSenderEmail,
+ replyTo: project.smtpReplyTo,
+ host: project.smtpHost,
+ port: project.smtpPort,
+ username: project.smtpUsername,
+ password: project.smtpPassword,
+ secure: project.smtpSecure
+ }
+ )
});
async function updateSmtp() {
try {
- if (!enabled) {
- enabled = false;
- senderName = undefined;
- senderEmail = undefined;
- replyTo = undefined;
- host = undefined;
- port = undefined;
- username = undefined;
- password = undefined;
- }
-
await sdk.forConsole.projects.updateSMTP({
- projectId: $project.$id,
+ projectId: project.$id,
enabled,
senderName: senderName || undefined,
senderEmail: senderEmail || undefined,
@@ -76,7 +77,7 @@
invalidate(Dependencies.PROJECT);
addNotification({
type: 'success',
- message: 'SMTP server has been ' + (enabled ? 'enabled.' : 'disabled.')
+ message: `SMTP server has been ${enabled ? 'enabled.' : 'disabled.'}`
});
trackEvent(Submit.ProjectUpdateSMTP);
} catch (error) {
@@ -88,31 +89,30 @@
}
}
- $: isButtonDisabled = deepEqual(
- { enabled, senderName, senderEmail, replyTo, host, port, username, password, secure },
- {
- enabled: $project.smtpEnabled,
- senderName: $project.smtpSenderName,
- senderEmail: $project.smtpSenderEmail,
- replyTo: $project.smtpReplyTo,
- host: $project.smtpHost,
- port: $project.smtpPort,
- username: $project.smtpUsername,
- password: $project.smtpPassword,
- secure: $project.smtpSecure
- }
- );
+ $effect(() => {
+ enabled = project.smtpEnabled ?? false;
+ senderName = project.smtpSenderName;
+ senderEmail = project.smtpSenderEmail;
+ replyTo = project.smtpReplyTo;
+ host = project.smtpHost;
+ port = project.smtpPort;
+ username = project.smtpUsername;
+ password = project.smtpPassword;
+ secure = project.smtpSecure === 'tls' ? 'tls' : project.smtpSecure === 'ssl' ? 'ssl' : '';
+ });
- $: if (!enabled) {
- senderName = undefined;
- senderEmail = undefined;
- replyTo = undefined;
- host = undefined;
- port = undefined;
- username = undefined;
- password = undefined;
- secure = undefined;
- }
+ $effect(() => {
+ if (!enabled) {
+ senderName = undefined;
+ senderEmail = undefined;
+ replyTo = undefined;
+ host = undefined;
+ port = undefined;
+ username = undefined;
+ password = undefined;
+ secure = undefined;
+ }
+ });
@@ -120,8 +120,11 @@
SMTP server
You can customize the email service by providing your own SMTP server. View your email templates
- here
+ here
{#if !$currentPlan.customSmtp}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte
index 8ec2d2e6d7..88c2e91fdf 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateMockNumbers.svelte
@@ -1,10 +1,8 @@
@@ -138,7 +148,7 @@
fullWidth
external={isSelfHosted}
href={isCloud
- ? getChangePlanUrl($project.teamId)
+ ? getChangePlanUrl(project.teamId)
: 'https://cloud.appwrite.io/register'}
on:click={() => {
trackEvent(Click.CloudSignupClick, {
diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte
index 807adba3fe..de62ad3845 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionLength.svelte
@@ -7,11 +7,15 @@
import { createTimeUnitPair } from '$lib/helpers/unit';
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
- import { project as projectStore } from '../../store';
import { Layout } from '@appwrite.io/pink-svelte';
- import { page } from '$app/state';
+ import type { Models } from '@appwrite.io/console';
+
+ let {
+ project
+ }: {
+ project: Models.Project;
+ } = $props();
- const project = $derived($projectStore ?? page.data?.project);
const { value, unit, baseValue, units } = $derived(createTimeUnitPair(project?.authDuration));
const options = $derived(units.map((v) => ({ label: v.name, value: v.name })));
diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionsLimit.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionsLimit.svelte
index eb0bb97c89..1c6f0bb904 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionsLimit.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateSessionsLimit.svelte
@@ -7,14 +7,20 @@
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
import { Typography } from '@appwrite.io/pink-svelte';
- import { project } from '../../store';
+ import type { Models } from '@appwrite.io/console';
- let maxSessions = $project?.authSessionsLimit;
+ let {
+ project
+ }: {
+ project: Models.Project;
+ } = $props();
+
+ let maxSessions = $state(project?.authSessionsLimit);
async function updateSessionsLimit() {
try {
await sdk.forConsole.projects.updateAuthSessionsLimit({
- projectId: $project.$id,
+ projectId: project.$id,
limit: maxSessions
});
await invalidate(Dependencies.PROJECT);
@@ -49,7 +55,7 @@
bind:value={maxSessions} />
-
+
diff --git a/src/routes/(console)/project-[region]-[project]/auth/security/updateUsersLimit.svelte b/src/routes/(console)/project-[region]-[project]/auth/security/updateUsersLimit.svelte
index a319a1a08d..5296362cb2 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/security/updateUsersLimit.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/security/updateUsersLimit.svelte
@@ -7,29 +7,32 @@
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
import { Layout, Selector, Input, Badge } from '@appwrite.io/pink-svelte';
- import { project } from '../../store';
import { tick } from 'svelte';
+ import type { Models } from '@appwrite.io/console';
- let value = $project?.authLimit !== 0 ? 'limited' : 'unlimited';
+ let {
+ project
+ }: {
+ project: Models.Project;
+ } = $props();
- $: isLimited = value === 'limited';
- let newLimit = isLimited ? $project?.authLimit : 100;
+ let maxUsersInputField: HTMLInputElement | null = $state(null);
- $: btnDisabled = (function isBtnDisabled() {
- if (
- (!isLimited && $project?.authLimit === 0) ||
- (isLimited && $project?.authLimit === newLimit)
- ) {
- return true;
- }
+ let value = $state(project?.authLimit !== 0 ? 'limited' : 'unlimited');
+ let newLimit = $state(project?.authLimit !== 0 ? project?.authLimit : 100);
- return false;
- })();
+ const isLimited = $derived(value === 'limited');
+ const btnDisabled = $derived.by(() => {
+ return (
+ (!isLimited && project?.authLimit === 0) ||
+ (isLimited && project?.authLimit === newLimit)
+ );
+ });
async function updateLimit() {
try {
await sdk.forConsole.projects.updateAuthLimit({
- projectId: $project?.$id,
+ projectId: project?.$id,
limit: isLimited ? newLimit : 0
});
await invalidate(Dependencies.PROJECT);
@@ -47,13 +50,13 @@
}
}
- let maxUsersInputField: HTMLInputElement | null = null;
-
- $: if (isLimited && maxUsersInputField) {
- tick().then(() => {
- maxUsersInputField.focus();
- });
- }
+ $effect(() => {
+ if (isLimited && maxUsersInputField) {
+ tick().then(() => {
+ maxUsersInputField.focus();
+ });
+ }
+ });
diff --git a/src/routes/(console)/project-[region]-[project]/auth/settings/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/settings/+page.svelte
index 28a3896a12..5850c6ce73 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/settings/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/settings/+page.svelte
@@ -1,5 +1,4 @@
-{#if $authMethods && $project}
+{#if $authMethods && project}
@@ -73,7 +75,7 @@
OAuth2 Providers
- {#each $project.oAuthProviders
+ {#each project.oAuthProviders
.filter((p) => p.name !== 'Mock')
.sort( (a, b) => (a.enabled === b.enabled ? 0 : a.enabled ? -1 : 1) ) as provider}
{@const oAuthProvider = oAuthProviders[provider.key]}
@@ -116,9 +118,9 @@
{/if}
{#if selectedProvider && showProvider}
- {@const oAuthProvider = oAuthProviders[selectedProvider.key]}
- {
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
index da7178906c..446975e3e9 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
@@ -58,11 +58,12 @@
import { isCloud } from '$lib/system';
import { Accordion, Alert, Badge, Layout, Link, Typography } from '@appwrite.io/pink-svelte';
import { page } from '$app/state';
+ import type { PageProps } from './$types';
- export let data;
+ let { data }: PageProps = $props();
- let templateType = null;
- let isTemplateLoading = false;
+ let templateType = $state(null);
+ let isTemplateLoading = $state(false);
let openStates = Object.fromEntries(templates.map(({ key }) => [key, false]));
loadTemplateFor(EmailTemplateType.Verification);
@@ -128,9 +129,11 @@
on:toggle={(event) => event.detail && toggleAccordion(section.key)}>
{section.description}
-
+ {@const SectionComponent = section.component}
+
{/each}
@@ -144,7 +147,8 @@
+
{#if isCloud && $currentPlan.emailBranding}
-
+
{/if}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/email2FATemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/email2FATemplate.svelte
index 536a1aa282..932bd7e2c2 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/email2FATemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/email2FATemplate.svelte
@@ -2,19 +2,19 @@
import EmailTemplate from './emailTemplate.svelte';
import LocaleOptions from './localeOptions.svelte';
import { loadEmailTemplate } from './+page.svelte';
- import { page } from '$app/state';
import { baseEmailTemplate, emailTemplate } from './store';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Mfachallenge,
locale
);
@@ -44,8 +44,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{otp}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailInviteTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailInviteTemplate.svelte
index f723da9cd1..38ec9c54cd 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailInviteTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailInviteTemplate.svelte
@@ -2,19 +2,19 @@
import EmailTemplate from './emailTemplate.svelte';
import LocaleOptions from './localeOptions.svelte';
import { loadEmailTemplate } from './+page.svelte';
- import { page } from '$app/state';
import { baseEmailTemplate, emailTemplate } from './store';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Invitation,
locale
);
@@ -44,8 +44,9 @@
-
-
+
+
+
{'{{team}}'}
{'{{user}}'}
{'{{project}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailMagicUrlTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailMagicUrlTemplate.svelte
index 1e98218db0..ac962841ce 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailMagicUrlTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailMagicUrlTemplate.svelte
@@ -3,18 +3,18 @@
import EmailTemplate from './emailTemplate.svelte';
import LocaleOptions from './localeOptions.svelte';
import { baseEmailTemplate, emailTemplate } from './store';
- import { page } from '$app/state';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Magicsession,
locale
);
@@ -45,8 +45,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{redirect}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailOtpSessionTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailOtpSessionTemplate.svelte
index 07e6b1bc63..1ec2f24bd2 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailOtpSessionTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailOtpSessionTemplate.svelte
@@ -3,18 +3,18 @@
import EmailTemplate from './emailTemplate.svelte';
import LocaleOptions from './localeOptions.svelte';
import { baseEmailTemplate, emailTemplate } from './store';
- import { page } from '$app/state';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Otpsession,
locale
);
@@ -45,8 +45,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{otp}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailRecoveryTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailRecoveryTemplate.svelte
index 23597970ff..b49a333e17 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailRecoveryTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailRecoveryTemplate.svelte
@@ -3,25 +3,29 @@
import LocaleOptions from './localeOptions.svelte';
import { baseEmailTemplate, emailTemplate } from './store';
import { loadEmailTemplate } from './+page.svelte';
- import { page } from '$app/state';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
isUpdating = true;
}, 1000);
try {
- const template = await loadEmailTemplate(projectId, EmailTemplateType.Recovery, locale);
+ const template = await loadEmailTemplate(
+ project.$id,
+ EmailTemplateType.Recovery,
+ locale
+ );
emailTemplate.set(template);
$baseEmailTemplate = { ...$emailTemplate };
trackEvent(Submit.EmailChangeLocale, { locale, type: EmailTemplateType.Recovery });
@@ -40,8 +44,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{redirect}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSessionAlertTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSessionAlertTemplate.svelte
index ebe9075501..ecd1cbb282 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSessionAlertTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSessionAlertTemplate.svelte
@@ -2,19 +2,19 @@
import EmailTemplate from './emailTemplate.svelte';
import LocaleOptions from './localeOptions.svelte';
import { loadEmailTemplate } from './+page.svelte';
- import { page } from '$app/state';
import { baseEmailTemplate, emailTemplate } from './store';
import { addNotification } from '$lib/stores/notifications';
import { Id } from '$lib/components';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Sessionalert,
locale
);
@@ -44,8 +44,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{device}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte
index 59030bb715..2afc6261a3 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte
@@ -8,7 +8,13 @@
import EmailLight from './email-footer-light.png';
import EmailMobileDark from './email-footer-mobile-dark.png';
import EmailMobileLight from './email-footer-mobile-light.png';
- import { project } from '$routes/(console)/project-[region]-[project]/store';
+ import type { Models } from '@appwrite.io/console';
+
+ const {
+ project
+ }: {
+ project: Models.Project;
+ } = $props();
@@ -55,7 +61,7 @@
class="u-margin-block-start-32"
secondary
fullWidth
- href={getChangePlanUrl($project.teamId)}
+ href={getChangePlanUrl(project.teamId)}
on:click={() => {
trackEvent(Click.OrganizationClickUpgrade, {
from: 'button',
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
index 0e5757047e..cd5bb6958e 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte
@@ -2,21 +2,37 @@
import { Button, Form, InputEmail, InputText, InputTextarea } from '$lib/elements/forms';
import { addNotification } from '$lib/stores/notifications';
import { sdk } from '$lib/stores/sdk';
- import { project } from '../../store';
import ResetEmail from './resetEmail.svelte';
import { baseEmailTemplate, emailTemplate } from './store';
import deepEqual from 'deep-equal';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
- import type { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import {
+ type EmailTemplateLocale,
+ type EmailTemplateType,
+ type Models
+ } from '@appwrite.io/console';
import { Icon, Layout, Tooltip, Typography } from '@appwrite.io/pink-svelte';
import { IconInfo } from '@appwrite.io/pink-icons-svelte';
import TemplateSkeleton from './templateSkeleton.svelte';
+ import type { Snippet } from 'svelte';
- export let loading = false;
- export let isUpdating = false;
+ let {
+ loading = false,
+ isUpdating = false,
+ project,
+ children = null
+ }: {
+ loading: boolean;
+ isUpdating: boolean;
+ project: Models.Project;
+ children: Snippet;
+ } = $props();
- let openResetModal = false;
- let eventType = Submit.EmailUpdateInviteTemplate;
+ let openResetModal = $state(false);
+ let eventType = $state(Submit.EmailUpdateInviteTemplate);
+
+ const isSmtpEnabled = $derived(project?.smtpEnabled);
+ const isButtonDisabled = $derived(deepEqual($emailTemplate, $baseEmailTemplate));
async function saveEmailTemplate() {
if (!$emailTemplate.locale) {
@@ -51,7 +67,7 @@
}
// TODO: fix TemplateType and TemplateLocale typing once SDK is updated
await sdk.forConsole.projects.updateEmailTemplate({
- projectId: $project.$id,
+ projectId: project.$id,
type: $emailTemplate.type as EmailTemplateType,
locale: $emailTemplate.locale as EmailTemplateLocale,
subject: $emailTemplate.subject || undefined,
@@ -80,9 +96,6 @@
});
}
}
-
- $: isSmtpEnabled = $project?.smtpEnabled;
- $: isButtonDisabled = deepEqual($emailTemplate, $baseEmailTemplate);
@@ -111,7 +124,7 @@
label="Reply to"
placeholder="noreply@appwrite.io" />
- {#if $$slots.default}
+ {#if children}
Click to copy variables for the fields below. Learn more here.
+
-
+ {@render children()}
{/if}
@@ -154,4 +168,4 @@
-
+
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailVerificationTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailVerificationTemplate.svelte
index 54f257fe4d..4f5f9d9532 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailVerificationTemplate.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailVerificationTemplate.svelte
@@ -3,18 +3,18 @@
import LocaleOptions from './localeOptions.svelte';
import { loadEmailTemplate } from './+page.svelte';
import { baseEmailTemplate, emailTemplate } from './store';
- import { page } from '$app/state';
import { Id } from '$lib/components';
import { addNotification } from '$lib/stores/notifications';
import { Submit, trackError, trackEvent } from '$lib/actions/analytics';
import { Layout, Card } from '@appwrite.io/pink-svelte';
- import { EmailTemplateLocale, EmailTemplateType } from '@appwrite.io/console';
+ import { EmailTemplateLocale, EmailTemplateType, type Models } from '@appwrite.io/console';
export let loading = false;
+ export let project: Models.Project;
+ export let localeCodes: Models.LocaleCode[];
let isUpdating = false;
let locale = EmailTemplateLocale.En;
- const projectId = page.params.project;
async function onLocaleChange() {
const timeout = setTimeout(() => {
@@ -22,7 +22,7 @@
}, 1000);
try {
const template = await loadEmailTemplate(
- projectId,
+ project.$id,
EmailTemplateType.Verification,
locale
);
@@ -44,8 +44,8 @@
-
-
+
+
{'{{user}}'}
{'{{project}}'}
{'{{redirect}}'}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/localeOptions.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/localeOptions.svelte
index 4c4c334caf..08613e1591 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/localeOptions.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/localeOptions.svelte
@@ -1,10 +1,11 @@
@@ -20,5 +23,5 @@
-
+
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
index 30ecb4d7a5..8a92d9fe41 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
@@ -1,24 +1,29 @@
@@ -52,7 +57,7 @@
? [$user.email, $user.phone].join(',')
: $user.email || $user.phone}
- Last activity: {accessedAt ? toLocaleDate(accessedAt) : 'never'}
+ Last activity: {$user.accessedAt ? toLocaleDate($user.accessedAt) : 'never'}
@@ -61,4 +66,4 @@
-
+
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
index 043cd64ac5..8f9ef79b0e 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
@@ -1,29 +1,34 @@
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
index 8a92d9fe41..1518c2e57b 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/dangerZone.svelte
@@ -7,10 +7,12 @@
export const promptDeleteUser = (id: string) => {
showDelete.set(true);
- goto(resolveRoute('/(console)/project-[region]-[project]/auth/user-[user]', {
- ...page.params,
- user: id
- }));
+ goto(
+ resolveRoute('/(console)/project-[region]-[project]/auth/user-[user]', {
+ ...page.params,
+ user: id
+ })
+ );
};
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
index 8f9ef79b0e..ffd2d48547 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteUser.svelte
@@ -10,8 +10,8 @@
import { Submit, trackEvent, trackError } from '$lib/actions/analytics';
export let showDelete = false;
- export let user: Models.User;
export let project: Models.Project;
+ export let user: Models.User>;
let error: string;
const deleteUser = async () => {
@@ -25,10 +25,11 @@
message: `${user.name ? user.name : 'User'} has been deleted`
});
trackEvent(Submit.UserDelete);
- await goto(resolveRoute('/(console)/project-[region]-[project]/auth', {
- ...page.params
- }));
-
+ await goto(
+ resolveRoute('/(console)/project-[region]-[project]/auth', {
+ ...page.params
+ })
+ );
} catch (e) {
error = e.message;
trackError(e, Submit.UserDelete);
diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte
index 0e9940292e..4c0c0a5869 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/updatePrefs.svelte
@@ -97,9 +97,11 @@
{:else}
-
+
{/if}
@@ -238,7 +240,11 @@
onSubmit={createPolicies}
bind:show={$showCreatePolicy}
bind:error={policyCreateError}>
-
+
($showCreatePolicy = false)}>Cancel
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/containerHeader.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/containerHeader.svelte
index 5e2cae01d6..11e2c3fa85 100644
--- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/containerHeader.svelte
+++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/containerHeader.svelte
@@ -4,11 +4,12 @@
import { Button } from '$lib/elements/forms';
import { getChangePlanUrl } from '$lib/stores/billing';
import { IconInfo, IconPlus } from '@appwrite.io/pink-icons-svelte';
- import { project } from '$routes/(console)/project-[region]-[project]/store';
import { Badge, Icon, Layout, Tag, Typography } from '@appwrite.io/pink-svelte';
+ import type { Models } from '@appwrite.io/console';
export let isFlex = true;
export let title: string;
+ export let project: Models.Project;
export let buttonText: string = null;
export let policiesCreated: number = 0;
@@ -22,8 +23,8 @@
{
showDropdown = !showDropdown;
- goto(getChangePlanUrl($project.teamId));
+ goto(getChangePlanUrl(project.teamId));
}}>Upgrade your plan to add customized backup policies.
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/createPolicy.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/createPolicy.svelte
index 8fe6baa085..b6950baf4a 100644
--- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/createPolicy.svelte
+++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/createPolicy.svelte
@@ -10,7 +10,7 @@
InputTime,
Label
} from '$lib/elements/forms';
- import { ID } from '@appwrite.io/console';
+ import { ID, type Models } from '@appwrite.io/console';
import { capitalize } from '$lib/helpers/string';
import { backupRetainingOptions, customRetainingOptions } from '../store';
import { presetPolicies, showCreatePolicy } from './store';
@@ -26,12 +26,12 @@
import { isSmallViewport } from '$lib/stores/viewport';
import { goto } from '$app/navigation';
import { getChangePlanUrl } from '$lib/stores/billing';
- import { project } from '$routes/(console)/project-[region]-[project]/store';
export let isShowing: boolean;
export let isFromBackupsTab: boolean = false;
export let title: string | undefined = undefined;
export let subtitle: string | undefined = undefined;
+ export let project: Models.Project;
export let totalPolicies: UserBackupPolicy[] = [];
@@ -214,7 +214,7 @@
on:click={() => {
isShowing = false;
$showCreatePolicy = false;
- goto(getChangePlanUrl($project.teamId));
+ goto(getChangePlanUrl(project.teamId));
}}>Upgrade your plan to add customized backup policies.
@@ -230,7 +230,7 @@
{
isShowing = false;
- goto(getChangePlanUrl($project.teamId));
+ goto(getChangePlanUrl(project.teamId));
}}>Upgrade your plan
to add customized backup policies.
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/locked.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/locked.svelte
index bf12af386c..c456184aac 100644
--- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/locked.svelte
+++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/locked.svelte
@@ -11,15 +11,23 @@
import LockedBackupsDarkTablet from '$lib/images/backups/empty/backups-tablet-dark.png';
import LockedBackupsLightTablet from '$lib/images/backups/empty/backups-tablet-light.png';
+ import type { Models } from '@appwrite.io/console';
+
+ let {
+ project
+ }: {
+ project: Models.Project;
+ } = $props();
-
+
+
@@ -81,7 +81,7 @@
{isCloud ? 'Upgrade plan' : 'Sign up'}
@@ -91,7 +91,7 @@
{isCloud ? 'Upgrade plan' : 'Sign up'}
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 e56f274dce..8bf9dee80a 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
@@ -42,7 +42,6 @@
import CreateColumn from './createColumn.svelte';
import { CreateColumnPanel } from '$lib/commandCenter/panels';
import { showCreateEntity } from '../store';
- import { project } from '../../../store';
import { page } from '$app/state';
import { canWriteTables } from '$lib/stores/roles';
import {
@@ -298,8 +297,13 @@
columnCreationHandler = handler;
+ const project = {
+ id: page.params.project,
+ region: page.params.region
+ };
+
columns = await generateFields(
- $project,
+ project,
page.params.database,
page.params.table,
databaseType
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 c3b3ed8e7f..67ccf95f1d 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
@@ -46,7 +46,6 @@
import { ActionMenu, Selector } from '@appwrite.io/pink-svelte';
import RequiredArrayCheckboxes from './requiredArrayCheckboxes.svelte';
import { InputNumber, InputText, InputTextarea } from '$lib/elements/forms';
- import { project } from '$routes/(console)/project-[region]-[project]/store';
import { Popover, Layout, Tag, Typography, Link } from '@appwrite.io/pink-svelte';
export let data: Partial
= {
@@ -60,6 +59,8 @@
export let disabled = false;
export let autoIncreaseSize = false;
+ const organizationId = page.data?.organization?.$id ?? page.data?.project?.$id;
+
let savedDefault = data.default;
function handleDefaultState(hideDefault: boolean) {
@@ -161,7 +162,7 @@
- Available on Pro plan. Upgrade
to enable encrypted columns.
From 7a3af231169ae08b2c4d85a2b1e75a774833bc11 Mon Sep 17 00:00:00 2001
From: Darshan
Date: Wed, 28 Jan 2026 14:59:13 +0530
Subject: [PATCH 6/8] fix: more fixes on functions.
---
.../template-[template]/+page.svelte | 10 +++++++--
.../template-[template]/configuration.svelte | 6 +++---
.../function-[function]/+layout.svelte | 21 +++++++++----------
.../domains/add-domain/+page.svelte | 16 ++++++++------
.../executions/+page.svelte | 5 ++---
.../settings/executeFunction.svelte | 19 ++++++++++-------
6 files changed, 45 insertions(+), 32 deletions(-)
diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte
index 98c8bf7ea4..421a217d8f 100644
--- a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte
@@ -242,7 +242,10 @@
repositoryId={selectedRepository} />
{#if data.template.variables?.length}
-
+
{/if}
{:else}
@@ -328,7 +331,10 @@
{/if}
{:else if data.template.variables?.length}
-
+
{/if}
{/if}
diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/configuration.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/configuration.svelte
index cd21e5838d..94fdf57c8e 100644
--- a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/configuration.svelte
+++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/configuration.svelte
@@ -21,8 +21,8 @@
import type { Component } from 'svelte';
import { getApiEndpoint } from '$lib/stores/sdk';
import { page } from '$app/state';
- import { project } from '$routes/(console)/project-[region]-[project]/store';
+ export let project: Models.Project;
export let variables: Partial[] = [];
export let templateVariables: Models.TemplateVariable[] = [];
@@ -47,8 +47,8 @@
variable.value = page.params.project;
variable.placeholder = page.params.project;
} else if (variable.value === '{projectName}') {
- variable.value = $project.name;
- variable.placeholder = $project.name;
+ variable.value = project.name;
+ variable.placeholder = project.name;
} else return variable;
});
variables = [...variables];
diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/+layout.svelte
index aca7e790ee..24aadfb532 100644
--- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/+layout.svelte
+++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/+layout.svelte
@@ -6,7 +6,6 @@
import { invalidate, goto } from '$app/navigation';
import { registerCommands } from '$lib/commandCenter';
import { func, showCreateDeployment } from './store';
- import { project } from '../../store';
import type { Models } from '@appwrite.io/console';
import { base } from '$app/paths';
import { canWriteFunctions } from '$lib/stores/roles';
@@ -52,7 +51,7 @@
async callback() {
if (!page.url.pathname.endsWith($func.$id)) {
await goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}`
);
}
showCreateDeployment.set(true);
@@ -66,7 +65,7 @@
label: 'Permissions',
async callback() {
await goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings#permissions`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings#permissions`
);
scrollBy({ top: -100 });
},
@@ -78,7 +77,7 @@
label: 'Events',
async callback() {
await goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings#events`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings#events`
);
scrollBy({ top: -100 });
},
@@ -90,7 +89,7 @@
label: 'Variables',
async callback() {
await goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings#variables`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings#variables`
);
},
icon: IconList,
@@ -101,7 +100,7 @@
label: 'Timeout',
callback() {
goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings#timeout`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings#timeout`
);
},
icon: IconXCircle,
@@ -112,7 +111,7 @@
label: 'Schedule',
async callback() {
await goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings#schedule`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings#schedule`
);
scrollBy({ top: -100 });
},
@@ -124,7 +123,7 @@
label: 'Go to deployments',
callback() {
goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}`
);
},
keys: ['g', 'd'],
@@ -136,7 +135,7 @@
label: 'Go to usage',
callback() {
goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/usage`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/usage`
);
},
keys: ['g', 'u'],
@@ -148,7 +147,7 @@
label: 'Go to executions',
callback() {
goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/executions`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/executions`
);
},
keys: ['g', 'e'],
@@ -160,7 +159,7 @@
label: 'Go to settings',
callback() {
goto(
- `${base}/project-${$project.region}-${$project.$id}/functions/function-${$func.$id}/settings`
+ `${base}/project-${page.params.region}-${page.params.project}/functions/function-${$func.$id}/settings`
);
},
keys: ['g', 's'],
diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte
index 6a9d3183aa..add73ffdde 100644
--- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte
@@ -1,5 +1,4 @@
@@ -39,10 +48,6 @@
-
- Execute
-
+ Execute
From de14d181379bb04897710da2e237cc7f576a3e6f Mon Sep 17 00:00:00 2001
From: Darshan
Date: Wed, 28 Jan 2026 15:01:47 +0530
Subject: [PATCH 7/8] fix: more store fixes.
---
.../function-[function]/settings/updateResourceLimits.svelte | 1 +
.../settings/usage/[[invoice]]/+page.svelte | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateResourceLimits.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateResourceLimits.svelte
index 021902a711..fce7e945d7 100644
--- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateResourceLimits.svelte
+++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/settings/updateResourceLimits.svelte
@@ -17,6 +17,7 @@
export let func: Models.Function;
export let specs: Models.SpecificationList;
+
let specification = func.specification;
let originalSpecification = func.specification;
$: originalSpecification = func.specification;
diff --git a/src/routes/(console)/project-[region]-[project]/settings/usage/[[invoice]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/usage/[[invoice]]/+page.svelte
index 962901f18f..830c933754 100644
--- a/src/routes/(console)/project-[region]-[project]/settings/usage/[[invoice]]/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/settings/usage/[[invoice]]/+page.svelte
@@ -61,7 +61,7 @@
{#if planHasGroup(currentBillingPlan, BillingPlanGroup.Starter)}
-
+
Upgrade
{/if}
@@ -86,7 +86,7 @@
If you exceed the limits of the {currentBillingPlan.name} plan, services for your projects
may be disrupted.
- Upgrade for greater capacity.
From ad909fdf026dd151d19d3950a951bc0cdc07eba0 Mon Sep 17 00:00:00 2001
From: Darshan
Date: Wed, 28 Jan 2026 15:24:09 +0530
Subject: [PATCH 8/8] fix: state.
---
.../project-[region]-[project]/auth/templates/+page.svelte | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
index da54773df1..72002ae96b 100644
--- a/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/auth/templates/+page.svelte
@@ -64,7 +64,7 @@
let templateType = $state(null);
let isTemplateLoading = $state(false);
- let openStates = Object.fromEntries(templates.map(({ key }) => [key, false]));
+ let openStates = $state(Object.fromEntries(templates.map(({ key }) => [key, false])));
loadTemplateFor(EmailTemplateType.Verification);