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