From ddc866abcc4befde62d9f12db7e9a0cc6e90a852 Mon Sep 17 00:00:00 2001 From: akisblack Date: Sun, 13 Jul 2025 16:53:47 +0300 Subject: [PATCH 1/4] fix nav animation and some overflowing text --- src/lib/Nav/ThemeToggle.svelte | 2 +- src/routes/contact/+page.svelte | 1 + src/routes/instances/+page.svelte | 4 ++-- src/routes/legal/privacy-policy/+page.svelte | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/Nav/ThemeToggle.svelte b/src/lib/Nav/ThemeToggle.svelte index 75d7c03..6f7c22a 100755 --- a/src/lib/Nav/ThemeToggle.svelte +++ b/src/lib/Nav/ThemeToggle.svelte @@ -17,7 +17,7 @@ - - {:else} -
- You are not signed in - -
- {/if} -{:else} -
- Authentik is not configured - Configure Authentik -
-{/if} From 5229f07f59c2c20000d4d80bc9e79e14203964df Mon Sep 17 00:00:00 2001 From: Midou Date: Wed, 16 Jul 2025 01:34:16 +0100 Subject: [PATCH 3/4] rename upstream --- src/routes/contact/+page.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/routes/contact/+page.svelte b/src/routes/contact/+page.svelte index 06c05bc..cac43d0 100755 --- a/src/routes/contact/+page.svelte +++ b/src/routes/contact/+page.svelte @@ -20,9 +20,8 @@

We have an XMPP MUC for general discussion about Project Segfault over at #general@conference.projectsegfau.lt#sysadmin@conference.projectsegfau.lt.

From 7ac6dd54c872a63aef86128e33d007ef3431820c Mon Sep 17 00:00:00 2001 From: Akis <41871089+akisblack@users.noreply.github.com> Date: Thu, 17 Jul 2025 15:41:14 +0300 Subject: [PATCH 4/4] fix blog (#115) --- README.md | 3 +++ src/hooks.server.ts | 5 +++- src/lib/Nav/Nav.svelte | 4 +--- src/routes/blog/[title]/+page.server.ts | 31 ++++++++++++++----------- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 971c565..f1add7b 100755 --- a/README.md +++ b/README.md @@ -41,6 +41,9 @@ The website has the following **mandatory** environment variables | :----------------- | :--------------------------------------------- | | GHOST_URL | Your Ghost CMS URL | | GHOST_API_KEY | Your Ghost CMS API key | +| GHOST_ALLPOSTS_URL | Your URL for all ghost posts, see below | | KUMA_URL | Your Uptime Kuma announcements URL | | ORIGIN | Your domain | | ADDRESS_HEADER | Header used to retrieve client IP (Caddy only) | + +> GHOST_ALLPOSTS_URL should be of the form `https://GHOST_URL/ghost/api/content/posts/?key=GHOST_API_KEY&include=authors,tags&limit=all&formats=html,plaintext` \ No newline at end of file diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 8fce3ca..5750932 100755 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -58,7 +58,10 @@ const updateMap = async () => { } try { - const res = await fetchGhost("posts"); + const res = await axios(env.GHOST_ALLPOSTS_URL, { + httpsAgent: agent, + timeout: 10000 + }); if (res.status === 200) { blogPosts.set(res.data); diff --git a/src/lib/Nav/Nav.svelte b/src/lib/Nav/Nav.svelte index 2219fc5..00abee6 100755 --- a/src/lib/Nav/Nav.svelte +++ b/src/lib/Nav/Nav.svelte @@ -13,9 +13,7 @@ text: "Wiki", external: true }, - // Temporary workaround. - //{ href: "/blog", text: "Blog" }, - { href: "https://blog.projectsegfau.lt", text: "Blog" }, + { href: "/blog", text: "Blog" }, { href: "/donate", text: "Donate" }, { href: "/contact", text: "Contact" }, diff --git a/src/routes/blog/[title]/+page.server.ts b/src/routes/blog/[title]/+page.server.ts index 9d6d9e4..ea6cf8f 100755 --- a/src/routes/blog/[title]/+page.server.ts +++ b/src/routes/blog/[title]/+page.server.ts @@ -1,19 +1,22 @@ -import type { PageServerLoad } from "./$types"; -import fetchGhost from "../fetchGhost"; +import type { PageServerLoad, PageServerLoadEvent } from "./$types"; import { blogPosts } from "../../../stores"; import { get } from "svelte/store"; -export const load = (async ({ params, fetch }) => { - const data = await fetchGhost("posts/slug/" + params.title); +// yes this was made by gitbub copilot - const allPosts = get(blogPosts); - const meta = { - title: !allPosts.error ? data.posts[0].title : "" - }; +const load: PageServerLoad = async ({ params }: PageServerLoadEvent) => { + const allPosts = get(blogPosts) as { error?: boolean; posts?: any[] }; + let post: any = {}; + let title = ""; + if (allPosts && !allPosts.error && Array.isArray(allPosts.posts)) { + post = allPosts.posts.find((p: any) => p.slug === params.title) || {}; + title = post.title || ""; + } + return { + post, + allPosts, + title + }; +}; - return { - post: !allPosts.error ? data.posts[0] : {}, - allPosts: allPosts, - ...meta - }; -}) satisfies PageServerLoad; +export { load };