From 8f5032244c546cbfb383d08a2b26010ab7a5d5fa Mon Sep 17 00:00:00 2001 From: Florian <45694132+flo-bit@users.noreply.github.com> Date: Fri, 6 Feb 2026 23:49:37 +0100 Subject: [PATCH 1/2] move pages to handle/p/..., make it work on custom domains --- src/params/handle.ts | 3 +- .../{[[page]] => (pages)}/+layout.server.ts | 0 .../{[[page]] => (pages)}/+page.svelte | 0 .../{[[page]] => (pages)}/edit/+page.svelte | 0 .../(pages)/p/[[page]]/+page.svelte | 13 + .../p}/[[page]]/copy/+page.svelte | 0 .../(pages)/p/[[page]]/edit/+page.svelte | 6 + src/routes/p/[[page]]/+layout.server.ts | 25 ++ src/routes/p/[[page]]/+page.svelte | 13 + src/routes/p/[[page]]/copy/+page.svelte | 252 ++++++++++++++++++ src/routes/p/[[page]]/edit/+page.svelte | 6 + 11 files changed, 317 insertions(+), 1 deletion(-) rename src/routes/[handle=handle]/{[[page]] => (pages)}/+layout.server.ts (100%) rename src/routes/[handle=handle]/{[[page]] => (pages)}/+page.svelte (100%) rename src/routes/[handle=handle]/{[[page]] => (pages)}/edit/+page.svelte (100%) create mode 100644 src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte rename src/routes/[handle=handle]/{ => (pages)/p}/[[page]]/copy/+page.svelte (100%) create mode 100644 src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte create mode 100644 src/routes/p/[[page]]/+layout.server.ts create mode 100644 src/routes/p/[[page]]/+page.svelte create mode 100644 src/routes/p/[[page]]/copy/+page.svelte create mode 100644 src/routes/p/[[page]]/edit/+page.svelte diff --git a/src/params/handle.ts b/src/params/handle.ts index 9fdb684..40d458b 100644 --- a/src/params/handle.ts +++ b/src/params/handle.ts @@ -1,5 +1,6 @@ +import { isActorIdentifier } from '@atcute/lexicons/syntax'; import type { ParamMatcher } from '@sveltejs/kit'; export const match = ((param: string) => { - return param.includes('.') || param.startsWith('did:'); + return isActorIdentifier(param); }) satisfies ParamMatcher; diff --git a/src/routes/[handle=handle]/[[page]]/+layout.server.ts b/src/routes/[handle=handle]/(pages)/+layout.server.ts similarity index 100% rename from src/routes/[handle=handle]/[[page]]/+layout.server.ts rename to src/routes/[handle=handle]/(pages)/+layout.server.ts diff --git a/src/routes/[handle=handle]/[[page]]/+page.svelte b/src/routes/[handle=handle]/(pages)/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/+page.svelte rename to src/routes/[handle=handle]/(pages)/+page.svelte diff --git a/src/routes/[handle=handle]/[[page]]/edit/+page.svelte b/src/routes/[handle=handle]/(pages)/edit/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/edit/+page.svelte rename to src/routes/[handle=handle]/(pages)/edit/+page.svelte diff --git a/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte new file mode 100644 index 0000000..3419d88 --- /dev/null +++ b/src/routes/[handle=handle]/(pages)/p/[[page]]/+page.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/[handle=handle]/[[page]]/copy/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/copy/+page.svelte similarity index 100% rename from src/routes/[handle=handle]/[[page]]/copy/+page.svelte rename to src/routes/[handle=handle]/(pages)/p/[[page]]/copy/+page.svelte diff --git a/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte b/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte new file mode 100644 index 0000000..e57bf31 --- /dev/null +++ b/src/routes/[handle=handle]/(pages)/p/[[page]]/edit/+page.svelte @@ -0,0 +1,6 @@ + + + diff --git a/src/routes/p/[[page]]/+layout.server.ts b/src/routes/p/[[page]]/+layout.server.ts new file mode 100644 index 0000000..faca3a0 --- /dev/null +++ b/src/routes/p/[[page]]/+layout.server.ts @@ -0,0 +1,25 @@ +import { loadData } from '$lib/website/load'; +import { env } from '$env/dynamic/public'; +import type { UserCache } from '$lib/types'; +import type { Did, Handle } from '@atcute/lexicons'; + +export async function load({ params, platform, request }) { + const cache = platform?.env?.USER_DATA_CACHE as unknown; + + const handle = env.PUBLIC_HANDLE; + + const kv = platform?.env?.CUSTOM_DOMAINS; + + const customDomain = request.headers.get('X-Custom-Domain')?.toLocaleLowerCase(); + + if (kv && customDomain) { + try { + const did = await kv.get(customDomain); + return await loadData(did as Did, cache as UserCache, false, params.page); + } catch { + console.error('failed'); + } + } + + return await loadData(handle as Handle, cache as UserCache, false, params.page); +} diff --git a/src/routes/p/[[page]]/+page.svelte b/src/routes/p/[[page]]/+page.svelte new file mode 100644 index 0000000..3419d88 --- /dev/null +++ b/src/routes/p/[[page]]/+page.svelte @@ -0,0 +1,13 @@ + + + diff --git a/src/routes/p/[[page]]/copy/+page.svelte b/src/routes/p/[[page]]/copy/+page.svelte new file mode 100644 index 0000000..b456d15 --- /dev/null +++ b/src/routes/p/[[page]]/copy/+page.svelte @@ -0,0 +1,252 @@ + + +
+
+ {#if user.isLoggedIn} +

Copy Page

+ +
+
+ Source Page +
+
+ {sourceHandle}/{sourcePage || 'main'} +
+

{sourceCards.length} cards

+
+ +
+ + +
+ + {#if error} +
+ {error} +
+ {/if} + + {#if success} +
+ Page copied successfully! Redirecting... +
+ {/if} + +
+ + Cancel + + +
+ {:else} +

+ You must be signed in to copy a page! +

+ +
+ +
+ {/if} +
+
diff --git a/src/routes/p/[[page]]/edit/+page.svelte b/src/routes/p/[[page]]/edit/+page.svelte new file mode 100644 index 0000000..e57bf31 --- /dev/null +++ b/src/routes/p/[[page]]/edit/+page.svelte @@ -0,0 +1,6 @@ + + + -- 2.51.2 From 7069270936b1b9bd8d93bda80b8b1b1cd5f45a81 Mon Sep 17 00:00:00 2001 From: Florian <45694132+flo-bit@users.noreply.github.com> Date: Sat, 7 Feb 2026 00:11:25 +0100 Subject: [PATCH 2/2] increase heap --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b38512c..3cdf79e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "dev": "vite dev", - "build": "vite build", + "build": "NODE_OPTIONS='--max-old-space-size=4096' vite build", "preview": "pnpm run build && wrangler dev", "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", -- 2.51.2