change name

This commit is contained in:
Vincent van der Wal
2026-07-20 11:26:49 +02:00
parent faee466286
commit 54dbaeaadc
10 changed files with 34 additions and 26 deletions
+5 -5
View File
@@ -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/). 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 ### Example: Caddy
```caddy ```caddy
ombrella.example.com { drizzli.example.com {
root * /srv/ombrella root * /srv/drizzli
file_server file_server
try_files {path} {path}/ /404.html try_files {path} {path}/ /404.html
header { header {
@@ -81,8 +81,8 @@ ombrella.example.com {
```nginx ```nginx
server { server {
server_name ombrella.example.com; server_name drizzli.example.com;
root /srv/ombrella; root /srv/drizzli;
error_page 404 /404.html; error_page 404 /404.html;
add_header Cross-Origin-Opener-Policy "same-origin" always; add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always; add_header Cross-Origin-Embedder-Policy "require-corp" always;
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "ombrella", "name": "drizzli",
"version": "0.0.1", "version": "0.0.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ombrella", "name": "drizzli",
"version": "0.0.1", "version": "0.0.1",
"devDependencies": { "devDependencies": {
"@eslint/compat": "^2.1.0", "@eslint/compat": "^2.1.0",
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "ombrella", "name": "drizzli",
"private": true, "private": true,
"version": "0.0.1", "version": "0.0.1",
"type": "module", "type": "module",
+1 -1
View File
@@ -1,5 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64"> <svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
<title>OMbrella</title> <title></title>
<defs> <defs>
<linearGradient id="sky" x1="0" y1="0" x2="0" y2="1"> <linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#e0f2fe" /> <stop offset="0" stop-color="#e0f2fe" />

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -43,7 +43,7 @@
let { let {
charts = [], charts = [],
fileName = 'ombrella-chart', fileName = 'drizzli-chart',
class: className = '', class: className = '',
controls controls
}: Props = $props(); }: Props = $props();
@@ -61,7 +61,7 @@
? 'justify-center' ? 'justify-center'
: 'px-4'}" : 'px-4'}"
onclick={onMobileClose} onclick={onMobileClose}
aria-label="OMbrella home" aria-label="Drizzli home"
> >
<div <div
class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground" class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground"
@@ -87,7 +87,7 @@
</div> </div>
{#if !collapsed} {#if !collapsed}
<span class="text-sm font-bold tracking-tight whitespace-nowrap text-sidebar-foreground"> <span class="text-sm font-bold tracking-tight whitespace-nowrap text-sidebar-foreground">
OMbrella Drizzli
</span> </span>
{/if} {/if}
</a> </a>
+1 -1
View File
@@ -1,3 +1,3 @@
<svelte:head> <svelte:head>
<title>OMbrella</title> <title>Drizzli</title>
</svelte:head> </svelte:head>
+1 -1
View File
@@ -8,6 +8,6 @@ describe('/+page.svelte', () => {
render(Page); render(Page);
const title = document.querySelector('title'); const title = document.querySelector('title');
expect(title?.textContent).toBe('OMbrella'); expect(title?.textContent).toBe('Drizzli');
}); });
}); });
+18 -10
View File
@@ -3,20 +3,28 @@
import { storedLocation } from '$lib/stores/settings'; import { storedLocation } from '$lib/stores/settings';
// a #zoom/lat/lng(/bearing/pitch) hash on OUR url is piped through to the // Hash piping, both directions:
// map, so map positions can be bookmarked/shared via ombrella links // - inbound: a #zoom/lat/lng(/bearing/pitch) hash on OUR url seeds the
// (the reverse direction is not possible: the iframe is cross-origin, so // map, so positions can be bookmarked/shared via drizzli links
// its internal hash changes are unreadable from here) // - 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<string | null>(null); let hashOverride = $state<string | null>(null);
const MAP_HASH_RE = /^#\d+(\.\d+)?\/-?\d+(\.\d+)?\/-?\d+(\.\d+)?/;
onMount(() => { onMount(() => {
const readHash = () => { const initialHash = window.location.hash;
const hash = window.location.hash; hashOverride = MAP_HASH_RE.test(initialHash) ? initialHash : null;
hashOverride = /^#\d+(\.\d+)?\/-?\d+(\.\d+)?\/-?\d+(\.\d+)?/.test(hash) ? hash : 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('message', onMessage);
window.addEventListener('hashchange', readHash); return () => window.removeEventListener('message', onMessage);
return () => window.removeEventListener('hashchange', readHash);
}); });
// the embedded map understands maplibre's #zoom/lat/lng hash, so the iframe // the embedded map understands maplibre's #zoom/lat/lng hash, so the iframe
@@ -120,8 +120,8 @@
</script> </script>
<svelte:head> <svelte:head>
<title>OMbrella | Weather</title> <title>Drizzli | Weather</title>
<link rel="canonical" href="https://ombrella.servert.ch/weather/week" /> <link rel="canonical" href="https://drizz.li/weather/week" />
<meta name="description" content="7-day weather forecast with detailed hourly data" /> <meta name="description" content="7-day weather forecast with detailed hourly data" />
</svelte:head> </svelte:head>