diff --git a/app/blog/[slug]/page.tsx b/app/blog/[slug]/page.tsx index cce73ea..7618a7a 100644 --- a/app/blog/[slug]/page.tsx +++ b/app/blog/[slug]/page.tsx @@ -57,11 +57,17 @@ export default async function BlogDetailPage({ const post = await getPostBySlug(slug, { draft: isPreview }); if (!post) notFound(); - // "Weiterlesen" — any other post, most recent first. Not the current - // one; falls back to nothing (section just doesn't render) rather than - // showing a fake/duplicate card when this is the only post. - const otherPosts = await getBlogPosts(4); - const nextPost = otherPosts.find((p) => p.slug !== post.slug) ?? null; + // "Weiterlesen" — the chronologically next-older post, wrapping around + // to the newest post from the oldest one. Not getBlogPosts()'s own + // -featured,-publishedAt order: picking "the first of the top 4 that + // isn't this one" made nearly every post's Weiterlesen converge on the + // same one or two most-recent posts (reported 2026-08-29). Sorting + // purely by publishedAt here instead makes every post point somewhere + // different, cycling through the whole archive one post at a time. + const allPosts = await getBlogPosts(100); + const byDate = [...allPosts].sort((a, b) => new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime()); + const currentIndex = byDate.findIndex((p) => p.slug === post.slug); + const nextPost = currentIndex === -1 || byDate.length < 2 ? null : byDate[(currentIndex + 1) % byDate.length]; const seller = await getCompanySettings(); const articleSchema = buildArticleSchema(post, seller); diff --git a/app/components/About.tsx b/app/components/About.tsx index cc0fca4..67589e2 100644 --- a/app/components/About.tsx +++ b/app/components/About.tsx @@ -96,21 +96,17 @@ export function About() { > Björn {/* Left gradient — from sm: up, not just lg:. Even without the -ml-48 overlap at Tablet, the photo sits directly against the diff --git a/public/about-banner.jpg b/public/about-banner.jpg new file mode 100644 index 0000000..8094f98 Binary files /dev/null and b/public/about-banner.jpg differ