From 54dbaeaadcb654cc5e81e79f17a6626a5545c80a Mon Sep 17 00:00:00 2001 From: Vincent van der Wal Date: Mon, 20 Jul 2026 11:26:49 +0200 Subject: [PATCH] change name --- README.md | 10 +++---- package-lock.json | 4 +-- package.json | 2 +- src/lib/assets/favicon.svg | 2 +- src/lib/components/charts/ChartToolbar.svelte | 2 +- .../components/navigation/weather-nav.svelte | 4 +-- src/routes/+page.svelte | 2 +- src/routes/page.svelte.spec.ts | 2 +- src/routes/weather/maps/+page.svelte | 28 ++++++++++++------- .../weather/week/[location]/+page.svelte | 4 +-- 10 files changed, 34 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index ef0180f..60e0d0c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# OMbrella +# Drizzli An open-source, high-performance weather forecast website built with SvelteKit and powered by the [Open-Meteo APIs](https://open-meteo.com/). @@ -66,8 +66,8 @@ here.) ### Example: Caddy ```caddy -ombrella.example.com { - root * /srv/ombrella +drizzli.example.com { + root * /srv/drizzli file_server try_files {path} {path}/ /404.html header { @@ -81,8 +81,8 @@ ombrella.example.com { ```nginx server { - server_name ombrella.example.com; - root /srv/ombrella; + server_name drizzli.example.com; + root /srv/drizzli; error_page 404 /404.html; add_header Cross-Origin-Opener-Policy "same-origin" always; add_header Cross-Origin-Embedder-Policy "require-corp" always; diff --git a/package-lock.json b/package-lock.json index 019fcde..8d198af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ombrella", + "name": "drizzli", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ombrella", + "name": "drizzli", "version": "0.0.1", "devDependencies": { "@eslint/compat": "^2.1.0", diff --git a/package.json b/package.json index 68989c7..6b88f34 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "ombrella", + "name": "drizzli", "private": true, "version": "0.0.1", "type": "module", diff --git a/src/lib/assets/favicon.svg b/src/lib/assets/favicon.svg index e88d727..3a99f1f 100644 --- a/src/lib/assets/favicon.svg +++ b/src/lib/assets/favicon.svg @@ -1,5 +1,5 @@ - OMbrella + diff --git a/src/lib/components/charts/ChartToolbar.svelte b/src/lib/components/charts/ChartToolbar.svelte index 1024e2f..96aa004 100644 --- a/src/lib/components/charts/ChartToolbar.svelte +++ b/src/lib/components/charts/ChartToolbar.svelte @@ -43,7 +43,7 @@ let { charts = [], - fileName = 'ombrella-chart', + fileName = 'drizzli-chart', class: className = '', controls }: Props = $props(); diff --git a/src/lib/components/navigation/weather-nav.svelte b/src/lib/components/navigation/weather-nav.svelte index 392f62b..336f7b0 100644 --- a/src/lib/components/navigation/weather-nav.svelte +++ b/src/lib/components/navigation/weather-nav.svelte @@ -61,7 +61,7 @@ ? 'justify-center' : 'px-4'}" onclick={onMobileClose} - aria-label="OMbrella home" + aria-label="Drizzli home" >
{#if !collapsed} - OMbrella + Drizzli {/if} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index f2bb703..9bb1763 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,3 +1,3 @@ - OMbrella + Drizzli diff --git a/src/routes/page.svelte.spec.ts b/src/routes/page.svelte.spec.ts index 1fa08f6..e00004c 100644 --- a/src/routes/page.svelte.spec.ts +++ b/src/routes/page.svelte.spec.ts @@ -8,6 +8,6 @@ describe('/+page.svelte', () => { render(Page); const title = document.querySelector('title'); - expect(title?.textContent).toBe('OMbrella'); + expect(title?.textContent).toBe('Drizzli'); }); }); diff --git a/src/routes/weather/maps/+page.svelte b/src/routes/weather/maps/+page.svelte index f531954..f4d52e5 100644 --- a/src/routes/weather/maps/+page.svelte +++ b/src/routes/weather/maps/+page.svelte @@ -3,20 +3,28 @@ import { storedLocation } from '$lib/stores/settings'; - // a #zoom/lat/lng(/bearing/pitch) hash on OUR url is piped through to the - // map, so map positions can be bookmarked/shared via ombrella links - // (the reverse direction is not possible: the iframe is cross-origin, so - // its internal hash changes are unreadable from here) + // Hash piping, both directions: + // - inbound: a #zoom/lat/lng(/bearing/pitch) hash on OUR url seeds the + // map, so positions can be bookmarked/shared via drizzli links + // - outbound: the (cross-origin) map posts its hash here on every moveend; + // we mirror it into our url with replaceState. hashOverride is only set + // once on mount, so these mirror updates never reload the iframe. let hashOverride = $state(null); + const MAP_HASH_RE = /^#\d+(\.\d+)?\/-?\d+(\.\d+)?\/-?\d+(\.\d+)?/; + onMount(() => { - const readHash = () => { - const hash = window.location.hash; - hashOverride = /^#\d+(\.\d+)?\/-?\d+(\.\d+)?\/-?\d+(\.\d+)?/.test(hash) ? hash : null; + const initialHash = window.location.hash; + hashOverride = MAP_HASH_RE.test(initialHash) ? initialHash : null; + + const onMessage = (event: MessageEvent) => { + if (event.origin !== 'https://maps.open-meteo.com') return; + const { type, hash } = (event.data ?? {}) as { type?: string; hash?: string }; + if (type !== 'om-maps:hash' || !hash || !MAP_HASH_RE.test(hash)) return; + history.replaceState(history.state, '', hash); }; - readHash(); - window.addEventListener('hashchange', readHash); - return () => window.removeEventListener('hashchange', readHash); + window.addEventListener('message', onMessage); + return () => window.removeEventListener('message', onMessage); }); // the embedded map understands maplibre's #zoom/lat/lng hash, so the iframe diff --git a/src/routes/weather/week/[location]/+page.svelte b/src/routes/weather/week/[location]/+page.svelte index 30ac0f3..f5266fa 100644 --- a/src/routes/weather/week/[location]/+page.svelte +++ b/src/routes/weather/week/[location]/+page.svelte @@ -120,8 +120,8 @@ - OMbrella | Weather - + Drizzli | Weather +