From 2d13d2df56d103b79e5c3c7cae6448f31d982201 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 17:44:05 +1000 Subject: [PATCH 01/16] Replace status iframe with mirror cards and actions --- src/routes/mirrors/+page.svelte | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 9317c4df..84875fb3 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -1,6 +1,27 @@ - + + +
+
+ {#each mirrors as mirror} + + {new URL(mirror.url).hostname} + + + + + + {/each} +
+
From a8f2a28c1bb4ee8496c3ddaaa1c8e161246ae5b5 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 17:50:23 +1000 Subject: [PATCH 02/16] Update mirrors list --- src/routes/mirrors/+page.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 84875fb3..19149ce5 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -3,7 +3,10 @@ import * as Card from '$lib/components/ui/card/index.js'; import createBackup from '$lib/createBackup'; - let mirrors = [{ url: 'https://example.com', notes: '' }]; + let mirrors = [ + { url: 'https://edutools.ingo.au', notes: '', recommended: true }, + { url: 'https://edutools.ingowolf.au', notes: '', recommended: true } + ];
From d7b15ff4c35b314704ce8af7706d4a68b6877928 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 17:51:44 +1000 Subject: [PATCH 03/16] add recommended badge --- src/routes/mirrors/+page.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 19149ce5..48436d79 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -1,7 +1,9 @@ @@ -17,7 +17,11 @@ {new URL(mirror.url).hostname} - {#if mirror.recommended} + {#if mirror.quality == 'highlyrecommended'} + Highly Recommended + {:else if mirror.quality == 'recommended'} Recommended {/if} From c34b50650b033af3c30fc96b12cd5de048ac334e Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:01:31 +1000 Subject: [PATCH 05/16] add backgorund to recommended --- src/routes/mirrors/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 0802e53e..49154b54 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -22,7 +22,7 @@ >Highly Recommended {:else if mirror.quality == 'recommended'} - Recommended + Recommended {/if} From 9750c44618b8c86fa2e699e4481baaab018c670c Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:02:09 +1000 Subject: [PATCH 06/16] change colors a bit --- src/routes/mirrors/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 49154b54..ed48cbfd 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -22,7 +22,7 @@ >Highly Recommended {:else if mirror.quality == 'recommended'} - Recommended + Recommended {/if} From 82ed1ca0b58eed8ab987be62d9c2b89ef38b9fbb Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:22:19 +1000 Subject: [PATCH 07/16] Add more mirrors and improve quality badges on mirrors page --- src/routes/mirrors/+page.svelte | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index ed48cbfd..b6c00078 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -4,10 +4,23 @@ import * as Card from '$lib/components/ui/card/index.js'; import createBackup from '$lib/createBackup'; import Trophy from '@lucide/svelte/icons/trophy'; + import Star from '@lucide/svelte/icons/star'; + import TriangleAlert from '@lucide/svelte/icons/triangle-alert'; - let mirrors = [ - { url: 'https://edutools.ingo.au', notes: '', quality: 'highlyrecommended' }, - { url: 'https://edutools.ingowolf.au', notes: '', quality: 'recommended' } + interface Mirror { + url: string; + notes?: string; + quality?: string; + } + + let mirrors: Mirror[] = [ + { url: 'https://edutools.ingo.au', quality: 'highlyrecommended' }, + { url: 'https://edutools.ingowolf.au', quality: 'recommended' }, + { url: 'https://educationaltools.github.io', quality: 'recommended' }, + { url: 'https://educationaltools.vercel.app', notes: '' }, + { url: 'https://edutools-d915e.web.app', notes: '' }, + { url: 'https://edutools-d915e.firebaseapp.com', notes: '' }, + { url: 'https://edutools.infinityfreeapp.com', quality: 'notrecommended' } ]; @@ -17,12 +30,19 @@ {new URL(mirror.url).hostname} + {#if mirror.quality == 'highlyrecommended'} Highly Recommended {:else if mirror.quality == 'recommended'} - Recommended + Recommended + {:else if mirror.quality == 'notrecommended'} + Not Recommended + {/if} + + {#if mirror.notes} + {mirror.notes} {/if} From 9abbc2413048574979e2b690385222d0465678be Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:22:59 +1000 Subject: [PATCH 08/16] add header --- src/routes/mirrors/+page.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index b6c00078..e0b7e682 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -25,6 +25,7 @@
+

Mirrors

{#each mirrors as mirror} From fc30f58aa7f64ec8449f0850819deddaead6b482 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:23:48 +1000 Subject: [PATCH 09/16] simplify --- src/routes/handoff/+page.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/routes/handoff/+page.svelte b/src/routes/handoff/+page.svelte index a47cb4b3..0efe8eba 100644 --- a/src/routes/handoff/+page.svelte +++ b/src/routes/handoff/+page.svelte @@ -81,11 +81,7 @@ - - + {#if !selected} + + + + + {/if} {/each}
From 9ce9405a95abd05d58bc6e87cf53de79d8175414 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:33:58 +1000 Subject: [PATCH 11/16] Remove localhost from mirrors list --- src/routes/mirrors/+page.svelte | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 6adb6cd6..c2400d80 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -23,8 +23,7 @@ { url: 'https://educationaltools.vercel.app', notes: '' }, { url: 'https://edutools-d915e.web.app', notes: '' }, { url: 'https://edutools-d915e.firebaseapp.com', notes: '' }, - { url: 'https://edutools.infinityfreeapp.com', quality: 'notrecommended' }, - { url: 'https://localhost', quality: 'notrecommended' } + { url: 'https://edutools.infinityfreeapp.com', quality: 'notrecommended' } ]; From d1ec78d6101564f8b87c30701961fb91046da57d Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:41:21 +1000 Subject: [PATCH 12/16] move mirrors to other file --- src/routes/mirrors/+page.svelte | 17 ++--------------- src/routes/mirrors/mirrors.config.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 15 deletions(-) create mode 100644 src/routes/mirrors/mirrors.config.ts diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index c2400d80..0ef30a7e 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -10,21 +10,8 @@ import { page } from '$app/state'; import clsx from 'clsx'; - interface Mirror { - url: string; - notes?: string; - quality?: string; - } - - let mirrors: Mirror[] = [ - { url: 'https://edutools.ingo.au', quality: 'highlyrecommended' }, - { url: 'https://edutools.ingowolf.au', quality: 'recommended' }, - { url: 'https://educationaltools.github.io', quality: 'recommended' }, - { url: 'https://educationaltools.vercel.app', notes: '' }, - { url: 'https://edutools-d915e.web.app', notes: '' }, - { url: 'https://edutools-d915e.firebaseapp.com', notes: '' }, - { url: 'https://edutools.infinityfreeapp.com', quality: 'notrecommended' } - ]; + import type { Mirror } from './mirrors.config'; + import { mirrors } from './mirrors.config';
diff --git a/src/routes/mirrors/mirrors.config.ts b/src/routes/mirrors/mirrors.config.ts new file mode 100644 index 00000000..2d170ac1 --- /dev/null +++ b/src/routes/mirrors/mirrors.config.ts @@ -0,0 +1,15 @@ +export type Mirror = { + url: string; + quality?: 'highlyrecommended' | 'recommended' | 'notrecommended'; + notes?: string; +}; + +export const mirrors: Mirror[] = [ + { url: 'https://edutools.ingo.au', quality: 'highlyrecommended' }, + { url: 'https://edutools.ingowolf.au', quality: 'recommended' }, + { url: 'https://educationaltools.github.io', quality: 'recommended' }, + { url: 'https://educationaltools.vercel.app', notes: '' }, + { url: 'https://edutools-d915e.web.app', notes: '' }, + { url: 'https://edutools-d915e.firebaseapp.com', notes: '' }, + { url: 'https://edutools.infinityfreeapp.com', quality: 'notrecommended' } +]; From 61f8879f9d2081201f24675c2134c48780e91409 Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:42:18 +1000 Subject: [PATCH 13/16] Handle invalid mirror URLs gracefully in mirrors page --- src/routes/mirrors/+page.svelte | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index 0ef30a7e..bc526b2b 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -18,10 +18,24 @@

Mirrors

{#each mirrors as mirror} - {@const selected = page.url.hostname == new URL(mirror.url).hostname} + {@const selected = (() => { + try { + return page.url.hostname == new URL(mirror.url).hostname; + } catch (e) { + return false; + } + })()} - {new URL(mirror.url).hostname} + + {(() => { + try { + return new URL(mirror.url).hostname; + } catch (e) { + return 'Invalid URL'; + } + })()} + {#if selected} Current From 3cb2e1619f584ab422bb7323533210af3b5e51ad Mon Sep 17 00:00:00 2001 From: Ingo Wolf Date: Wed, 23 Jul 2025 18:45:03 +1000 Subject: [PATCH 14/16] Handle migration errors and show toast notification --- src/routes/mirrors/+page.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/routes/mirrors/+page.svelte b/src/routes/mirrors/+page.svelte index bc526b2b..8c28bb1b 100644 --- a/src/routes/mirrors/+page.svelte +++ b/src/routes/mirrors/+page.svelte @@ -12,6 +12,7 @@ import type { Mirror } from './mirrors.config'; import { mirrors } from './mirrors.config'; + import { toast } from 'svelte-sonner';
@@ -59,7 +60,15 @@