From d311fbad26fa93da9c926c9fd66bccdbc4683030 Mon Sep 17 00:00:00 2001 From: secondl1ght Date: Mon, 18 Dec 2023 22:57:05 -0700 Subject: [PATCH 1/9] remove old events from code --- README.md | 2 - src/app.css | 4 - src/routes/map/+page.svelte | 253 +++++++-------------------------- static/icons/hiker-icon.png | Bin 2483 -> 0 bytes static/icons/treasure-icon.png | Bin 571 -> 0 bytes 5 files changed, 51 insertions(+), 208 deletions(-) delete mode 100644 static/icons/hiker-icon.png delete mode 100644 static/icons/treasure-icon.png diff --git a/README.md b/README.md index 77cd2058..359e294b 100644 --- a/README.md +++ b/README.md @@ -59,8 +59,6 @@ Tagger profile badges by [AndrejCibik](https://twitter.com/AndrejCibik) Satoshi nakamoto icons created by Vitaly Gorbachev - Flaticon -Treasure Chest icon by [Bonsaiheldin](https://opengameart.org/content/treasure-chests-32x32) - --- ![Untitled](https://user-images.githubusercontent.com/85003930/194117128-2f96bafd-2379-407a-a584-6c03396a42cc.png) diff --git a/src/app.css b/src/app.css index 1c2b549b..812cdae2 100644 --- a/src/app.css +++ b/src/app.css @@ -58,8 +58,4 @@ .boosted-icon { background-image: url('/icons/boosted-icon-pin.svg'); } - - .treasure-icon { - background-image: url('/icons/treasure-icon.png'); - } } diff --git a/src/routes/map/+page.svelte b/src/routes/map/+page.svelte index 88a4d2c2..c188a1c5 100644 --- a/src/routes/map/+page.svelte +++ b/src/routes/map/+page.svelte @@ -22,7 +22,6 @@ import { elementError, elements, elementsSyncCount, mapUpdates } from '$lib/store'; import type { Leaflet, MapGroups, OSMTags, SearchElement, SearchResult } from '$lib/types'; import { detectTheme, errToast } from '$lib/utils'; - import axios from 'axios'; import type { Control, LatLng, LatLngBounds, Map } from 'leaflet'; import localforage from 'localforage'; import { onDestroy, onMount, tick } from 'svelte'; @@ -126,9 +125,6 @@ // allow to view map with only boosted locations const boosts = $page.url.searchParams.has('boosts'); - // allow to view map for hike event - const hikeEvent = $page.url.searchParams.has('mount-kili-hike'); - // displays a button in controls if there is new data available const showDataRefresh = () => { const refreshDiv: HTMLDivElement | null = document.querySelector('.data-refresh-div'); @@ -281,70 +277,68 @@ // add map and tiles map = leaflet.map(mapElement); - if (!hikeEvent) { - // use url hash if present - if (location.hash) { - try { - const coords = location.hash.split('/'); - map.setView([Number(coords[1]), Number(coords[2])], Number(coords[0].slice(1))); + // use url hash if present + if (location.hash) { + try { + const coords = location.hash.split('/'); + map.setView([Number(coords[1]), Number(coords[2])], Number(coords[0].slice(1))); + mapCenter = map.getCenter(); + } catch (error) { + map.setView([0, 0], 3); + mapCenter = map.getCenter(); + errToast( + 'Could not set map view to provided coordinates, please try again or contact BTC Map.' + ); + console.log(error); + } + } + + // set URL lat/long query view if it exists and is valid + else if (urlLat.length && urlLong.length) { + try { + if (urlLat.length > 1 && urlLong.length > 1) { + map.fitBounds([ + [Number(urlLat[0]), Number(urlLong[0])], + [Number(urlLat[1]), Number(urlLong[1])] + ]); mapCenter = map.getCenter(); - } catch (error) { - map.setView([0, 0], 3); + } else { + map.fitBounds([[Number(urlLat[0]), Number(urlLong[0])]]); mapCenter = map.getCenter(); - errToast( - 'Could not set map view to provided coordinates, please try again or contact BTC Map.' - ); - console.log(error); } + } catch (error) { + map.setView([0, 0], 3); + mapCenter = map.getCenter(); + errToast( + 'Could not set map view to provided coordinates, please try again or contact BTC Map.' + ); + console.log(error); } + } - // set URL lat/long query view if it exists and is valid - else if (urlLat.length && urlLong.length) { - try { - if (urlLat.length > 1 && urlLong.length > 1) { + // set view to last location if it is present in the cache + else { + localforage + .getItem('coords') + .then(function (value) { + if (value) { map.fitBounds([ - [Number(urlLat[0]), Number(urlLong[0])], - [Number(urlLat[1]), Number(urlLong[1])] + // @ts-expect-error + [value._northEast.lat, value._northEast.lng], + // @ts-expect-error + [value._southWest.lat, value._southWest.lng] ]); - mapCenter = map.getCenter(); } else { - map.fitBounds([[Number(urlLat[0]), Number(urlLong[0])]]); - mapCenter = map.getCenter(); + map.setView([0, 0], 3); } - } catch (error) { + }) + .catch(function (err) { map.setView([0, 0], 3); - mapCenter = map.getCenter(); errToast( - 'Could not set map view to provided coordinates, please try again or contact BTC Map.' + 'Could not set map view to cached coords, please try again or contact BTC Map.' ); - console.log(error); - } - } - - // set view to last location if it is present in the cache - else { - localforage - .getItem('coords') - .then(function (value) { - if (value) { - map.fitBounds([ - // @ts-expect-error - [value._northEast.lat, value._northEast.lng], - // @ts-expect-error - [value._southWest.lat, value._southWest.lng] - ]); - } else { - map.setView([0, 0], 3); - } - }) - .catch(function (err) { - map.setView([0, 0], 3); - errToast( - 'Could not set map view to cached coords, please try again or contact BTC Map.' - ); - console.log(err); - }); - } + console.log(err); + }); } // add tiles and basemaps @@ -374,7 +368,7 @@ Thanks for using BTC Map!`); mapCenter = map.getCenter(); - if (!urlLat.length && !urlLong.length && !hikeEvent) { + if (!urlLat.length && !urlLong.length) { const zoom = map.getZoom(); location.hash = zoom + '/' + mapCenter.lat.toFixed(5) + '/' + mapCenter.lng.toFixed(5); } @@ -542,151 +536,6 @@ Thanks for using BTC Map!`); controlLayers = leaflet.control.layers(baseMaps).addTo(map); - // treasure hunt event - if (Date.now() < new Date('April 30, 2023 00:00:00').getTime()) { - const treasureIcon = leaflet.divIcon({ - className: 'treasure-icon', - iconSize: [24, 24], - html: ` - - - - - ` - }); - - leaflet - .marker([53.37225, -6.17711], { icon: treasureIcon }) - .bindTooltip( - `

- Bitcoin Treasure Hunt -
- April 29th, 2023 @ 1PM -
- Hosted by Dublin Bitcoiners -
- dublinbitcoiners.com/treasure-hunt -
- Everyone welcome! -

- - ${ - theme === 'dark' - ? ` - ` - : '' - }`, - { sticky: true } - ) - .addTo(map); - } - - // mount kili hike event - if (Date.now() < new Date('September 4, 2023 00:00:00').getTime()) { - try { - const hikeData = await axios.get('https://static.btcmap.org/mount-kili-hike/data.json'); - const hikeDataFiltered = hikeData.data.filter( - (update: any) => - update.id !== undefined && - update.lat && - update.lon && - update.title && - update.comment && - update.timestamp && - update.url && - update.lightning && - update.active === true - ); - - const hikerIcon = leaflet.icon({ - iconUrl: '/icons/hiker-icon.png', - iconSize: [44, 44], - iconAnchor: [22, 44], - popupAnchor: [0, -44] - }); - - hikeDataFiltered.forEach((update: any) => { - const { lat, lon, title, comment, timestamp, url, lightning } = update; - const dateFormatted = new Intl.DateTimeFormat('en-US', { - dateStyle: 'medium', - timeStyle: 'short', - hour12: false - }).format(new Date(timestamp)); - - leaflet - .marker([lat, lon], { icon: hikerIcon }) - .bindPopup( - `

- ${title} -
- ${comment} -
- - ${dateFormatted} - -
- ${lat}, ${lon} -
- Read More | - Donate -

- - ${ - theme === 'dark' - ? ` - ` - : '' - }`, - { closeButton: false, maxWidth: 300, minWidth: 300 } - ) - .addTo(map); - }); - - if (hikeEvent) { - try { - map.fitBounds( - hikeDataFiltered.map((update: any) => [update.lat, update.lon]), - { animate: false } - ); - mapCenter = map.getCenter(); - } catch (error) { - map.setView([0, 0], 3); - mapCenter = map.getCenter(); - errToast( - 'Could not set map view to provided coordinates, please try again or contact BTC Map.' - ); - console.log(error); - } - } - } catch (error) { - console.error(error); - } - } - // change default icons changeDefaultIcons(true, leaflet, mapElement, DomEvent); diff --git a/static/icons/hiker-icon.png b/static/icons/hiker-icon.png deleted file mode 100644 index 0131ff32825986f1da898b6e89d3b33fa2410bf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2483 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 Date: Tue, 19 Dec 2023 15:56:36 -0700 Subject: [PATCH 2/9] add spirit of satoshi integration --- src/routes/about-us/+page.svelte | 3 ++- static/images/integrations/spirit.jpg | Bin 0 -> 29978 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 static/images/integrations/spirit.jpg diff --git a/src/routes/about-us/+page.svelte b/src/routes/about-us/+page.svelte index dbfa78e6..f28f6810 100644 --- a/src/routes/about-us/+page.svelte +++ b/src/routes/about-us/+page.svelte @@ -124,7 +124,8 @@ { name: 'Fedi', icon: 'fedi', url: 'https://www.fedi.xyz/' }, { name: 'Osmo', icon: 'osmo', url: 'https://www.osmowallet.com/' }, { name: 'Bitcoin Rocks!', icon: 'bitcoin-rocks', url: 'https://bitcoin.rocks/' }, - { name: 'lipa', icon: 'lipa', url: 'https://lipa.swiss/' } + { name: 'lipa', icon: 'lipa', url: 'https://lipa.swiss/' }, + { name: 'Spirit of Satoshi', icon: 'spirit', url: 'https://www.spiritofsatoshi.ai/' } ]; const projectIntegrations = [ diff --git a/static/images/integrations/spirit.jpg b/static/images/integrations/spirit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c134d84779423819305ae1225b728cc0eab55c6d GIT binary patch literal 29978 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 bjg0@#pXBFX@59y)>(n{k{sFxCGxvW0rtFhW literal 0 HcmV?d00001 From cd04825ed16332508a712de1b1a9e17b3e60e52a Mon Sep 17 00:00:00 2001 From: secondl1ght Date: Tue, 19 Dec 2023 21:02:58 -0700 Subject: [PATCH 3/9] add netlify toml --- netlify.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 netlify.toml diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 00000000..de5bf36e --- /dev/null +++ b/netlify.toml @@ -0,0 +1,2 @@ +[images] + remote_images = ["https://static.btcmap.org/images/communities/.*", "https://www.openstreetmap.org/.*", "https://avatars.githubusercontent.com/.*" ] From 08ee04e034d1c2c3e34703c5cc1177dbfb3e2761 Mon Sep 17 00:00:00 2001 From: secondl1ght Date: Tue, 19 Dec 2023 21:19:49 -0700 Subject: [PATCH 4/9] use image cdn for comm assets --- src/components/AboutCommunity.svelte | 2 +- src/components/CommunityCard.svelte | 4 +++- src/components/CommunityLeaderboardItem.svelte | 2 +- src/routes/communities/map/+page.svelte | 4 +--- src/routes/community/[area]/+page.svelte | 2 +- src/routes/merchant/[id]/+page.svelte | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/AboutCommunity.svelte b/src/components/AboutCommunity.svelte index 13ff4f15..f7ca35e6 100644 --- a/src/components/AboutCommunity.svelte +++ b/src/components/AboutCommunity.svelte @@ -14,7 +14,7 @@ avatar {tags.name} avatar - avatar + avatar ${ community.tags.name diff --git a/src/routes/community/[area]/+page.svelte b/src/routes/community/[area]/+page.svelte index bcf5da99..bf5dea73 100644 --- a/src/routes/community/[area]/+page.svelte +++ b/src/routes/community/[area]/+page.svelte @@ -117,7 +117,7 @@ const community = communityFound.tags; - avatar = community['icon:square']; + avatar = `https://btcmap.org/.netlify/images?url=${community['icon:square']}&fit=cover&w=256&h=256`; org = community.organization; sponsor = community.sponsor; continent = community.continent; diff --git a/src/routes/merchant/[id]/+page.svelte b/src/routes/merchant/[id]/+page.svelte index 3b78db66..5ad6cefa 100644 --- a/src/routes/merchant/[id]/+page.svelte +++ b/src/routes/merchant/[id]/+page.svelte @@ -818,7 +818,7 @@
logo Date: Tue, 19 Dec 2023 21:55:44 -0700 Subject: [PATCH 5/9] add security md --- SECURITY.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..737f7f40 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +## Supported Versions + +All versions. + +## Reporting a Vulnerability + +Please report all issues to [secondl1ght@protonmail.com](mailto:secondl1ght@protonmail.com) and I will get back to you as soon as possible. If a legitimate vulnerability is found that requires fixing, some sats may be sent in return. Keeping in mind that this is an open source project without funding. If you could include suggested actions to patch the problem that would also be helpful. Thanks. From d000ddc0b3e32d802d651fdfd454bae4aad6f873 Mon Sep 17 00:00:00 2001 From: secondl1ght Date: Tue, 19 Dec 2023 22:16:53 -0700 Subject: [PATCH 6/9] add exponential backoff for axios retries --- src/lib/map/setup.ts | 2 +- src/lib/sync/areas.ts | 2 +- src/lib/sync/elements.ts | 2 +- src/lib/sync/events.ts | 2 +- src/lib/sync/reports.ts | 2 +- src/lib/sync/users.ts | 2 +- src/routes/add-location/endpoint/+server.ts | 2 +- src/routes/boost/invoice/generate/+server.ts | 2 +- src/routes/boost/post/+server.ts | 2 +- src/routes/communities/add/endpoint/+server.ts | 2 +- src/routes/community/[area]/+page.server.ts | 2 +- src/routes/merchant/[id]/+page.svelte | 2 +- src/routes/merchant/[id]/+page.ts | 2 +- src/routes/tagger/[id]/+page.ts | 2 +- src/routes/tickets/endpoint/+server.ts | 2 +- src/routes/verify-location/endpoint/+server.ts | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/lib/map/setup.ts b/src/lib/map/setup.ts index b83e12ac..a6464f38 100644 --- a/src/lib/map/setup.ts +++ b/src/lib/map/setup.ts @@ -8,7 +8,7 @@ import type { DivIcon, Map } from 'leaflet'; import Time from 'svelte-time'; import { get } from 'svelte/store'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); export const toggleMapButtons = () => { const zoomInBtn: HTMLAnchorElement | null = document.querySelector('.leaflet-control-zoom-in'); diff --git a/src/lib/sync/areas.ts b/src/lib/sync/areas.ts index b17b5cd8..eda74aef 100644 --- a/src/lib/sync/areas.ts +++ b/src/lib/sync/areas.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import localforage from 'localforage'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const limit = 500; diff --git a/src/lib/sync/elements.ts b/src/lib/sync/elements.ts index d10d6d39..b990eaca 100644 --- a/src/lib/sync/elements.ts +++ b/src/lib/sync/elements.ts @@ -5,7 +5,7 @@ import axiosRetry from 'axios-retry'; import localforage from 'localforage'; import { get } from 'svelte/store'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const limit = 5000; diff --git a/src/lib/sync/events.ts b/src/lib/sync/events.ts index c82e4ac5..ad6cd1be 100644 --- a/src/lib/sync/events.ts +++ b/src/lib/sync/events.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import localforage from 'localforage'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const limit = 50000; diff --git a/src/lib/sync/reports.ts b/src/lib/sync/reports.ts index 3f81f1dd..39fa307b 100644 --- a/src/lib/sync/reports.ts +++ b/src/lib/sync/reports.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import localforage from 'localforage'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const limit = 20000; diff --git a/src/lib/sync/users.ts b/src/lib/sync/users.ts index 91108648..bd0c2411 100644 --- a/src/lib/sync/users.ts +++ b/src/lib/sync/users.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import localforage from 'localforage'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const limit = 7500; diff --git a/src/routes/add-location/endpoint/+server.ts b/src/routes/add-location/endpoint/+server.ts index b3233af4..084a727f 100644 --- a/src/routes/add-location/endpoint/+server.ts +++ b/src/routes/add-location/endpoint/+server.ts @@ -9,7 +9,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import crypto from 'crypto'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const used: string[] = []; // @ts-expect-error diff --git a/src/routes/boost/invoice/generate/+server.ts b/src/routes/boost/invoice/generate/+server.ts index 682897f0..3aba8ee0 100644 --- a/src/routes/boost/invoice/generate/+server.ts +++ b/src/routes/boost/invoice/generate/+server.ts @@ -3,7 +3,7 @@ import { error } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); // generate and return invoice // @ts-expect-error diff --git a/src/routes/boost/post/+server.ts b/src/routes/boost/post/+server.ts index fd9b478f..42f52fa7 100644 --- a/src/routes/boost/post/+server.ts +++ b/src/routes/boost/post/+server.ts @@ -3,7 +3,7 @@ import { error, json } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const used: string[] = []; diff --git a/src/routes/communities/add/endpoint/+server.ts b/src/routes/communities/add/endpoint/+server.ts index dfcda07c..e4a5d657 100644 --- a/src/routes/communities/add/endpoint/+server.ts +++ b/src/routes/communities/add/endpoint/+server.ts @@ -4,7 +4,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import crypto from 'crypto'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const used: string[] = []; diff --git a/src/routes/community/[area]/+page.server.ts b/src/routes/community/[area]/+page.server.ts index 2ca57861..69f983fc 100644 --- a/src/routes/community/[area]/+page.server.ts +++ b/src/routes/community/[area]/+page.server.ts @@ -3,7 +3,7 @@ import { error } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); // @ts-expect-error export async function load({ params }) { diff --git a/src/routes/merchant/[id]/+page.svelte b/src/routes/merchant/[id]/+page.svelte index 5ad6cefa..5a02720e 100644 --- a/src/routes/merchant/[id]/+page.svelte +++ b/src/routes/merchant/[id]/+page.svelte @@ -210,7 +210,7 @@ !dataInitialized && initializeData(); - axiosRetry(axios, { retries: 3 }); + axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); let merchant: Element | undefined; diff --git a/src/routes/merchant/[id]/+page.ts b/src/routes/merchant/[id]/+page.ts index 8fafe022..e60bac4b 100644 --- a/src/routes/merchant/[id]/+page.ts +++ b/src/routes/merchant/[id]/+page.ts @@ -2,7 +2,7 @@ import { error } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); // @ts-expect-error export async function load({ params }) { diff --git a/src/routes/tagger/[id]/+page.ts b/src/routes/tagger/[id]/+page.ts index 7b4c740d..cf4f5ee2 100644 --- a/src/routes/tagger/[id]/+page.ts +++ b/src/routes/tagger/[id]/+page.ts @@ -2,7 +2,7 @@ import { error } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); // @ts-expect-error export async function load({ params }) { diff --git a/src/routes/tickets/endpoint/+server.ts b/src/routes/tickets/endpoint/+server.ts index e6ec6e29..874ea73b 100644 --- a/src/routes/tickets/endpoint/+server.ts +++ b/src/routes/tickets/endpoint/+server.ts @@ -3,7 +3,7 @@ import { json } from '@sveltejs/kit'; import axios from 'axios'; import axiosRetry from 'axios-retry'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); export async function GET() { const headers = { diff --git a/src/routes/verify-location/endpoint/+server.ts b/src/routes/verify-location/endpoint/+server.ts index 86f8aac8..7f1f7f08 100644 --- a/src/routes/verify-location/endpoint/+server.ts +++ b/src/routes/verify-location/endpoint/+server.ts @@ -9,7 +9,7 @@ import axios from 'axios'; import axiosRetry from 'axios-retry'; import crypto from 'crypto'; -axiosRetry(axios, { retries: 3 }); +axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); const used: string[] = []; From bd1e20a978dc33b6269b2582709b43786bb38835 Mon Sep 17 00:00:00 2001 From: secondl1ght Date: Tue, 19 Dec 2023 22:45:56 -0700 Subject: [PATCH 7/9] improve header nav responsiveness --- src/components/Header.svelte | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/components/Header.svelte b/src/components/Header.svelte index f10cf779..585bbc72 100644 --- a/src/components/Header.svelte +++ b/src/components/Header.svelte @@ -51,14 +51,12 @@ -