From 02c371e60f2566c0fa4a9636bcefa0b9667f3489 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Tue, 23 Sep 2025 12:52:27 +1000 Subject: [PATCH 01/26] add upload artifact step --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0add09a9..06a467b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,3 +26,8 @@ jobs: PUBLIC_CONVEX_URL: ${{ secrets.PUBLIC_CONVEX_URL }} run: | pnpm run build + + - uses: actions/upload-artifact@v4 + with: + name: Build + path: ./build From 33f3a25f2fed6f5571bc1a2e7bedfa721cd311d6 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Tue, 23 Sep 2025 12:54:00 +1000 Subject: [PATCH 02/26] also run build on push --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 06a467b3..8e24e735 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,6 +2,7 @@ name: Build on: pull_request: + push: jobs: build: From e3ffdd237cfd79b82bcb2e85ee0257b0ec93dff5 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 08:57:05 +1000 Subject: [PATCH 03/26] comment out sidebar auth --- src/lib/components/app-sidebar.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/app-sidebar.svelte b/src/lib/components/app-sidebar.svelte index c0fc34ed..d858ee59 100644 --- a/src/lib/components/app-sidebar.svelte +++ b/src/lib/components/app-sidebar.svelte @@ -283,7 +283,7 @@ - + {/if} {#if !sidebar.isMobile} From 2caaf8a7aee6b95dcd72c18b4bffec6259702658 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 08:58:51 +1000 Subject: [PATCH 04/26] remvoe more references to clerk --- src/lib/components/app-sidebar.svelte | 2 -- src/lib/components/providers.svelte | 11 ++--------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/src/lib/components/app-sidebar.svelte b/src/lib/components/app-sidebar.svelte index d858ee59..a842bc67 100644 --- a/src/lib/components/app-sidebar.svelte +++ b/src/lib/components/app-sidebar.svelte @@ -30,11 +30,9 @@ import { settingsOpen } from '$lib/state.svelte'; // Auth - import { useClerkContext } from 'svelte-clerk/client'; import posthog from 'posthog-js'; import { GitBranch } from '@lucide/svelte'; import Badge from './ui/badge/badge.svelte'; - const ctx = useClerkContext(); import dayjs from 'dayjs'; diff --git a/src/lib/components/providers.svelte b/src/lib/components/providers.svelte index 69858b81..bf8d0efd 100644 --- a/src/lib/components/providers.svelte +++ b/src/lib/components/providers.svelte @@ -1,5 +1,4 @@ - - - - {@render children()} - + +{@render children()} From d065f601f84dff6ed024009a627a9001de3987b1 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 08:59:30 +1000 Subject: [PATCH 05/26] remove clerk and database from settings --- src/lib/components/settings.svelte | 38 +++++++++++++----------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/lib/components/settings.svelte b/src/lib/components/settings.svelte index 8e16e15a..8fe6aaf4 100644 --- a/src/lib/components/settings.svelte +++ b/src/lib/components/settings.svelte @@ -24,10 +24,6 @@ import { toast } from 'svelte-sonner'; import { onMount } from 'svelte'; import { save } from '$lib/sync'; - import { useClerkContext } from 'svelte-clerk'; - import { useConvexClient } from 'convex-svelte'; - const ctx = useClerkContext(); - const client = useConvexClient(); let distinct_id = $state('Not available') as string; @@ -46,24 +42,24 @@ // } } - $effect(() => { - if (ctx.session) { - getToken().then((token) => { - sessionToken = token; - }); - } - }); + // $effect(() => { + // if (ctx.session) { + // getToken().then((token) => { + // sessionToken = token; + // }); + // } + // }); - async function getToken() { - const token = await ctx.session?.getToken(); - if (!token) { - if (ctx.session) { - toast.error('Something went wrong'); - } - return ''; - } - return token; - } + // async function getToken() { + // const token = await ctx.session?.getToken(); + // if (!token) { + // if (ctx.session) { + // toast.error('Something went wrong'); + // } + // return ''; + // } + // return token; + // } const themeTriggerContent = $derived( themes.find((theme) => theme.value === $preferencesStore.theme)?.label ?? 'No theme :D' From 8f253502cb38402c937d2650cfc040c109527a4c Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:01:39 +1000 Subject: [PATCH 06/26] delete account page --- src/routes/account/[...slug]/+page.svelte | 36 ----------------------- 1 file changed, 36 deletions(-) delete mode 100644 src/routes/account/[...slug]/+page.svelte diff --git a/src/routes/account/[...slug]/+page.svelte b/src/routes/account/[...slug]/+page.svelte deleted file mode 100644 index a0588038..00000000 --- a/src/routes/account/[...slug]/+page.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - -
- -
From a8f24180adbbb0fbaa8872d2befcda82d29954fc Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:01:51 +1000 Subject: [PATCH 07/26] remove imports from providers --- src/lib/components/providers.svelte | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/components/providers.svelte b/src/lib/components/providers.svelte index bf8d0efd..7fd418ea 100644 --- a/src/lib/components/providers.svelte +++ b/src/lib/components/providers.svelte @@ -1,8 +1,6 @@ From 39f63fe8dfbe6c99288daa0c45b5f433a6fe3415 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:06:51 +1000 Subject: [PATCH 11/26] remove accounts from backups page --- src/routes/backups/+page.svelte | 34 ++------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/src/routes/backups/+page.svelte b/src/routes/backups/+page.svelte index 86bbd200..b9fff7e0 100644 --- a/src/routes/backups/+page.svelte +++ b/src/routes/backups/+page.svelte @@ -1,29 +1,10 @@ - -{#if page.url.hostname == 'edutools.ingo.au' || page.url.hostname == 'localhost'} - - - - - - - - - - - - {#snippet child({ props })} - - - - - {ctx.user?.username?.charAt(0).toUpperCase()} - - - - {ctx.user?.username} - {/snippet} - - - { - ctx.session?.end(); - posthog.reset(); - sidebar.setOpenMobile(false); - }} - > - - - Logout - - - - - - - - - Sign In - - - - - - - - Create Account - - - - -{:else} - - - - - - Sign In - - - - - - Create Account - - - - - Notice - - Due to technical limitations, to use accounts you must be using edutools.ingo.au - - - - - - -{/if} From 42defaa375de54ffb7ff97b693bf1b36ead7862e Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:12:46 +1000 Subject: [PATCH 20/26] comment out all backend logic --- src/convex/_generated/api.d.ts | 6 -- src/convex/backups.ts | 128 ++++++++++++++--------------- src/convex/sync.ts | 142 ++++++++++++++++----------------- src/convex/utils.ts | 128 ++++++++++++++--------------- 4 files changed, 199 insertions(+), 205 deletions(-) diff --git a/src/convex/_generated/api.d.ts b/src/convex/_generated/api.d.ts index 19187b5f..bb9140bb 100644 --- a/src/convex/_generated/api.d.ts +++ b/src/convex/_generated/api.d.ts @@ -13,10 +13,7 @@ import type { FilterApi, FunctionReference, } from "convex/server"; -import type * as backups from "../backups.js"; -import type * as sync from "../sync.js"; import type * as types from "../types.js"; -import type * as utils from "../utils.js"; /** * A utility for referencing Convex functions in your app's API. @@ -27,10 +24,7 @@ import type * as utils from "../utils.js"; * ``` */ declare const fullApi: ApiFromModules<{ - backups: typeof backups; - sync: typeof sync; types: typeof types; - utils: typeof utils; }>; export declare const api: FilterApi< typeof fullApi, diff --git a/src/convex/backups.ts b/src/convex/backups.ts index de1c060e..ca44bf71 100644 --- a/src/convex/backups.ts +++ b/src/convex/backups.ts @@ -1,68 +1,68 @@ -import { v } from 'convex/values'; -import { mutation, query } from './_generated/server'; -import { getAndUpdateUser, getUser, verifyJwtAndGetPayload } from './utils'; +// import { v } from 'convex/values'; +// import { mutation, query } from './_generated/server'; +// import { getAndUpdateUser, getUser, verifyJwtAndGetPayload } from './utils'; -export const get = query({ - args: { - jwt: v.string() - }, - handler: async (ctx, args) => { - const payload = await verifyJwtAndGetPayload(args.jwt); - const userInfo = await getUser(ctx, payload); - if (!userInfo) { - return []; - } - const backups = await ctx.db - .query('backup') - .order('desc') - .filter((q) => q.eq(q.field('user'), userInfo._id)) - .collect(); - return backups.map((backup) => ({ - name: backup.name, - data: backup.data, - creationTime: backup._creationTime, - id: backup._id - })); - } -}); +// export const get = query({ +// args: { +// jwt: v.string() +// }, +// handler: async (ctx, args) => { +// const payload = await verifyJwtAndGetPayload(args.jwt); +// const userInfo = await getUser(ctx, payload); +// if (!userInfo) { +// return []; +// } +// const backups = await ctx.db +// .query('backup') +// .order('desc') +// .filter((q) => q.eq(q.field('user'), userInfo._id)) +// .collect(); +// return backups.map((backup) => ({ +// name: backup.name, +// data: backup.data, +// creationTime: backup._creationTime, +// id: backup._id +// })); +// } +// }); -export const create = mutation({ - args: { - jwt: v.string(), - name: v.string(), - data: v.string() - }, - handler: async (ctx, args) => { - const payload = await verifyJwtAndGetPayload(args.jwt); - if (!payload.sub) { - throw new Error('Invalid JWT: missing subject'); - } - const userInfo = await getAndUpdateUser(ctx, payload); - if (!userInfo?._id) { - throw new Error('Something went wrong'); - } - await ctx.db.insert('backup', { - user: userInfo?._id, - name: args.name, - data: args.data - }); - } -}); +// export const create = mutation({ +// args: { +// jwt: v.string(), +// name: v.string(), +// data: v.string() +// }, +// handler: async (ctx, args) => { +// const payload = await verifyJwtAndGetPayload(args.jwt); +// if (!payload.sub) { +// throw new Error('Invalid JWT: missing subject'); +// } +// const userInfo = await getAndUpdateUser(ctx, payload); +// if (!userInfo?._id) { +// throw new Error('Something went wrong'); +// } +// await ctx.db.insert('backup', { +// user: userInfo?._id, +// name: args.name, +// data: args.data +// }); +// } +// }); -export const remove = mutation({ - args: { - jwt: v.string(), - id: v.id('backup') - }, - handler: async (ctx, args) => { - const payload = await verifyJwtAndGetPayload(args.jwt); - const backup = await ctx.db.get(args.id); - const userInfo = await getAndUpdateUser(ctx, payload); +// export const remove = mutation({ +// args: { +// jwt: v.string(), +// id: v.id('backup') +// }, +// handler: async (ctx, args) => { +// const payload = await verifyJwtAndGetPayload(args.jwt); +// const backup = await ctx.db.get(args.id); +// const userInfo = await getAndUpdateUser(ctx, payload); - if (backup?.user !== userInfo?._id) { - throw new Error('Unauthorized'); - } - await getAndUpdateUser(ctx, payload); - await ctx.db.delete(args.id); - } -}); +// if (backup?.user !== userInfo?._id) { +// throw new Error('Unauthorized'); +// } +// await getAndUpdateUser(ctx, payload); +// await ctx.db.delete(args.id); +// } +// }); diff --git a/src/convex/sync.ts b/src/convex/sync.ts index 52aa9cba..2275b656 100644 --- a/src/convex/sync.ts +++ b/src/convex/sync.ts @@ -1,74 +1,74 @@ -import { v } from 'convex/values'; -import { mutation, query } from './_generated/server'; -import { getAndUpdateUser, getUser, verifyJwtAndGetPayload } from './utils'; +// import { v } from 'convex/values'; +// import { mutation, query } from './_generated/server'; +// import { getAndUpdateUser, getUser, verifyJwtAndGetPayload } from './utils'; -export const get = query({ - args: { - jwt: v.string() - }, - handler: async (ctx, args) => { - const payload = await verifyJwtAndGetPayload(args.jwt); - const userInfo = await getUser(ctx, payload); - if (!userInfo) { - return null; - } - return { - settings: userInfo.settings, - favourites: userInfo.favourites, - history: userInfo.history - }; - } -}); +// export const get = query({ +// args: { +// jwt: v.string() +// }, +// handler: async (ctx, args) => { +// const payload = await verifyJwtAndGetPayload(args.jwt); +// const userInfo = await getUser(ctx, payload); +// if (!userInfo) { +// return null; +// } +// return { +// settings: userInfo.settings, +// favourites: userInfo.favourites, +// history: userInfo.history +// }; +// } +// }); -export const update = mutation({ - args: { - jwt: v.string(), - settings: v.optional( - v.object({ - experimentalFeatures: v.boolean(), - open: v.string(), - theme: v.string(), - panic: v.object({ - enabled: v.boolean(), - key: v.string(), - url: v.string(), - disableExperimentalMode: v.boolean() - }), - cloak: v.object({ - mode: v.string(), - name: v.string(), - icon: v.string() - }), - history: v.boolean() - }) - ), - favourites: v.optional(v.array(v.string())), - history: v.optional(v.array(v.string())) - }, - handler: async (ctx, args) => { - const payload = await verifyJwtAndGetPayload(args.jwt); - if (!payload.sub) { - throw new Error('Invalid JWT: missing subject'); - } - const userInfo = await getAndUpdateUser(ctx, payload); - if (!userInfo?._id) { - throw new Error('Something went wrong'); - } +// export const update = mutation({ +// args: { +// jwt: v.string(), +// settings: v.optional( +// v.object({ +// experimentalFeatures: v.boolean(), +// open: v.string(), +// theme: v.string(), +// panic: v.object({ +// enabled: v.boolean(), +// key: v.string(), +// url: v.string(), +// disableExperimentalMode: v.boolean() +// }), +// cloak: v.object({ +// mode: v.string(), +// name: v.string(), +// icon: v.string() +// }), +// history: v.boolean() +// }) +// ), +// favourites: v.optional(v.array(v.string())), +// history: v.optional(v.array(v.string())) +// }, +// handler: async (ctx, args) => { +// const payload = await verifyJwtAndGetPayload(args.jwt); +// if (!payload.sub) { +// throw new Error('Invalid JWT: missing subject'); +// } +// const userInfo = await getAndUpdateUser(ctx, payload); +// if (!userInfo?._id) { +// throw new Error('Something went wrong'); +// } - if (args.favourites) { - await ctx.db.patch(userInfo._id, { - favourites: args.favourites - }); - } - if (args.history) { - await ctx.db.patch(userInfo._id, { - history: args.history - }); - } - if (args.settings) { - await ctx.db.patch(userInfo._id, { - settings: args.settings - }); - } - } -}); +// if (args.favourites) { +// await ctx.db.patch(userInfo._id, { +// favourites: args.favourites +// }); +// } +// if (args.history) { +// await ctx.db.patch(userInfo._id, { +// history: args.history +// }); +// } +// if (args.settings) { +// await ctx.db.patch(userInfo._id, { +// settings: args.settings +// }); +// } +// } +// }); diff --git a/src/convex/utils.ts b/src/convex/utils.ts index 77170ae2..0cd95eca 100644 --- a/src/convex/utils.ts +++ b/src/convex/utils.ts @@ -1,69 +1,69 @@ -import * as jose from 'jose'; -import type { MutationCtx, QueryCtx } from './_generated/server'; -import type { JwtPayload } from 'jsonwebtoken'; +// import * as jose from 'jose'; +// import type { MutationCtx, QueryCtx } from './_generated/server'; +// import type { JwtPayload } from 'jsonwebtoken'; -// Shared helper function to verify JWT and return payload -export async function verifyJwtAndGetPayload(jwt: string) { - if (!process.env.CLERK_JWT_KEY) { - throw new Error('Missing CLERK_JWT_KEY environment variable'); - } - const publicKey = await jose.importSPKI(process.env.CLERK_JWT_KEY, 'RS256'); - if (jwt.length === 0) { - throw new Error('Missing JWT'); - } - const { payload } = await jose.jwtVerify(jwt, publicKey, {}); - if (!payload.sub) { - throw new Error('Invalid JWT'); - } - return payload; -} +// // Shared helper function to verify JWT and return payload +// export async function verifyJwtAndGetPayload(jwt: string) { +// if (!process.env.CLERK_JWT_KEY) { +// throw new Error('Missing CLERK_JWT_KEY environment variable'); +// } +// const publicKey = await jose.importSPKI(process.env.CLERK_JWT_KEY, 'RS256'); +// if (jwt.length === 0) { +// throw new Error('Missing JWT'); +// } +// const { payload } = await jose.jwtVerify(jwt, publicKey, {}); +// if (!payload.sub) { +// throw new Error('Invalid JWT'); +// } +// return payload; +// } -export async function getUser(ctx: QueryCtx, payload: JwtPayload) { - if (!payload.sub) { - throw new Error('Invalid JWT'); - } - let user = await ctx.db - .query('users') - .withIndex('clerkid', (q) => q.eq('clerkId', payload.sub || '')) - .first(); +// export async function getUser(ctx: QueryCtx, payload: JwtPayload) { +// if (!payload.sub) { +// throw new Error('Invalid JWT'); +// } +// let user = await ctx.db +// .query('users') +// .withIndex('clerkid', (q) => q.eq('clerkId', payload.sub || '')) +// .first(); - if (!user) { - return null; - } +// if (!user) { +// return null; +// } - return user; -} +// return user; +// } -export async function getAndUpdateUser(ctx: MutationCtx, payload: JwtPayload) { - if (!payload.sub) { - throw new Error('Invalid JWT'); - } - let user = await ctx.db - .query('users') - .withIndex('clerkid', (q) => q.eq('clerkId', payload.sub || '')) - .first(); - if (user) { - await ctx.db.patch(user._id, { - avatar: payload.avatar, - email: payload.email, - firstName: payload.firstname, - lastName: payload.lastname, - username: payload.username, - verified: payload.verified, - clerkId: payload.sub - }); - user = await ctx.db.get(user._id); - } else { - const userId = await ctx.db.insert('users', { - avatar: payload.avatar, - email: payload.email, - firstName: payload.firstname, - lastName: payload.firstname, - username: payload.username, - verified: payload.verified, - clerkId: payload.sub - }); - user = await ctx.db.get(userId); - } - return user; -} +// export async function getAndUpdateUser(ctx: MutationCtx, payload: JwtPayload) { +// if (!payload.sub) { +// throw new Error('Invalid JWT'); +// } +// let user = await ctx.db +// .query('users') +// .withIndex('clerkid', (q) => q.eq('clerkId', payload.sub || '')) +// .first(); +// if (user) { +// await ctx.db.patch(user._id, { +// avatar: payload.avatar, +// email: payload.email, +// firstName: payload.firstname, +// lastName: payload.lastname, +// username: payload.username, +// verified: payload.verified, +// clerkId: payload.sub +// }); +// user = await ctx.db.get(user._id); +// } else { +// const userId = await ctx.db.insert('users', { +// avatar: payload.avatar, +// email: payload.email, +// firstName: payload.firstname, +// lastName: payload.firstname, +// username: payload.username, +// verified: payload.verified, +// clerkId: payload.sub +// }); +// user = await ctx.db.get(userId); +// } +// return user; +// } From 0179d912c351023346f54c6dfa61b0a658341b70 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:13:25 +1000 Subject: [PATCH 21/26] remove sidebar auth from sidebar --- src/lib/components/app-sidebar.svelte | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib/components/app-sidebar.svelte b/src/lib/components/app-sidebar.svelte index a842bc67..3cc07642 100644 --- a/src/lib/components/app-sidebar.svelte +++ b/src/lib/components/app-sidebar.svelte @@ -10,7 +10,6 @@ import * as Command from '$lib/components/ui/command/index.js'; import * as Collapsible from '$lib/components/ui/collapsible/index.js'; import { useSidebar } from '$lib/components/ui/sidebar/index.js'; - import SidebarAuth from './sidebar-auth.svelte'; // Lucide icons import ChevronRight from '@lucide/svelte/icons/chevron-right'; @@ -281,7 +280,6 @@
- {/if} {#if !sidebar.isMobile} From 295f1bd8d16338725c07a8a29ab16f75c60d0a34 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:15:17 +1000 Subject: [PATCH 22/26] remove some backend stuff from settings --- src/lib/components/settings.svelte | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/src/lib/components/settings.svelte b/src/lib/components/settings.svelte index 8fe6aaf4..f29def16 100644 --- a/src/lib/components/settings.svelte +++ b/src/lib/components/settings.svelte @@ -37,30 +37,7 @@ function handleSettingsChange() { posthog.capture('settingschange', $preferencesStore); - // if (sessionToken && sessionToken !== '') { - // save(sessionToken, client, { settings: true }); - // } } - - // $effect(() => { - // if (ctx.session) { - // getToken().then((token) => { - // sessionToken = token; - // }); - // } - // }); - - // async function getToken() { - // const token = await ctx.session?.getToken(); - // if (!token) { - // if (ctx.session) { - // toast.error('Something went wrong'); - // } - // return ''; - // } - // return token; - // } - const themeTriggerContent = $derived( themes.find((theme) => theme.value === $preferencesStore.theme)?.label ?? 'No theme :D' ); From fad8cec6c973484bbc66db8fcf7a829503f3c638 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:15:41 +1000 Subject: [PATCH 23/26] disable sync --- src/lib/components/settings.svelte | 2 +- src/lib/sync.ts | 80 +++++++++++++++--------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/src/lib/components/settings.svelte b/src/lib/components/settings.svelte index f29def16..7e9d78da 100644 --- a/src/lib/components/settings.svelte +++ b/src/lib/components/settings.svelte @@ -23,7 +23,7 @@ import Button from './ui/button/button.svelte'; import { toast } from 'svelte-sonner'; import { onMount } from 'svelte'; - import { save } from '$lib/sync'; + // import { save } from '$lib/sync'; let distinct_id = $state('Not available') as string; diff --git a/src/lib/sync.ts b/src/lib/sync.ts index 7f9945d4..68217ed1 100644 --- a/src/lib/sync.ts +++ b/src/lib/sync.ts @@ -4,45 +4,45 @@ import { syncState } from './state.svelte'; import { syncSettingsStore, preferencesStore, favoritesStore, historyStore } from './stores'; import { useConvexClient } from 'convex-svelte'; -export async function save( - jwt: string, - client: ReturnType, - { - settings = false, - history = false, - favourites = false - }: { settings?: boolean; history?: boolean; favourites?: boolean } -) { - syncState.current = 'uploading'; - let mutationData: { settings?: any; history?: any; favourites?: any } = {}; +// export async function save( +// jwt: string, +// client: ReturnType, +// { +// settings = false, +// history = false, +// favourites = false +// }: { settings?: boolean; history?: boolean; favourites?: boolean } +// ) { +// syncState.current = 'uploading'; +// let mutationData: { settings?: any; history?: any; favourites?: any } = {}; - if (settings) { - let preferences = get(preferencesStore); - mutationData.settings = { - experimentalFeatures: preferences.experimentalFeatures, - open: preferences.open, - theme: preferences.theme, - panic: { - enabled: preferences.panic.enabled, - key: preferences.panic.key, - url: preferences.panic.url, - disableExperimentalMode: preferences.panic.disableExperimentalMode - }, - cloak: { - mode: preferences.cloak.mode, - name: preferences.cloak.name, - icon: preferences.cloak.icon - }, - history: preferences.history - }; - } - if (history) mutationData.history = get(historyStore); - if (favourites) mutationData.favourites = get(favoritesStore); +// if (settings) { +// let preferences = get(preferencesStore); +// mutationData.settings = { +// experimentalFeatures: preferences.experimentalFeatures, +// open: preferences.open, +// theme: preferences.theme, +// panic: { +// enabled: preferences.panic.enabled, +// key: preferences.panic.key, +// url: preferences.panic.url, +// disableExperimentalMode: preferences.panic.disableExperimentalMode +// }, +// cloak: { +// mode: preferences.cloak.mode, +// name: preferences.cloak.name, +// icon: preferences.cloak.icon +// }, +// history: preferences.history +// }; +// } +// if (history) mutationData.history = get(historyStore); +// if (favourites) mutationData.favourites = get(favoritesStore); - try { - await client.mutation(api.sync.update, { ...mutationData, jwt }); - } catch { - syncState.current = ''; - } - syncState.current = ''; -} +// try { +// await client.mutation(api.sync.update, { ...mutationData, jwt }); +// } catch { +// syncState.current = ''; +// } +// syncState.current = ''; +// } From 97a64955cded3ed04f43920ef774168ef543d684 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:16:15 +1000 Subject: [PATCH 24/26] remove identify --- src/routes/+layout.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8389dda5..97feea0f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -73,7 +73,6 @@ - From ad3423dbb5ffdd4f5e3655e21703f33ca62e12c3 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:25:21 +1000 Subject: [PATCH 25/26] reset posthog if user is identified --- src/routes/+layout.svelte | 2 ++ src/routes/identify.svelte | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/routes/identify.svelte diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 97feea0f..3f3d9614 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -29,6 +29,7 @@ import { buttonVariants } from '$lib/components/ui/button'; import Button from '$lib/components/ui/button/button.svelte'; import PanelLeftIcon from '@lucide/svelte/icons/panel-left'; + import Identify from './identify.svelte'; // State let trackerBlockerDialog = $state(false); @@ -73,6 +74,7 @@ + diff --git a/src/routes/identify.svelte b/src/routes/identify.svelte new file mode 100644 index 00000000..c19118f0 --- /dev/null +++ b/src/routes/identify.svelte @@ -0,0 +1,20 @@ + From 88832c6168cfb79d0c2eb990119e4f997bb1ff48 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 24 Sep 2025 09:35:36 +1000 Subject: [PATCH 26/26] remove/disable some functionality --- src/routes/backups/+page.svelte | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/routes/backups/+page.svelte b/src/routes/backups/+page.svelte index b9fff7e0..c3ba5ae2 100644 --- a/src/routes/backups/+page.svelte +++ b/src/routes/backups/+page.svelte @@ -1,8 +1,6 @@