From bbfe6165af5a47463227fa699f2f12512fd03cde Mon Sep 17 00:00:00 2001 From: Anthony Ettinger Date: Mon, 19 Oct 2026 13:15:59 +0000 Subject: [PATCH] Restore the @profullstack/footer webring row above the pit.world footer The webring footer is being rolled out fleet-wide on purpose. It comes back under the disclosure with the trimmed link set (About, API and MCP, Source) and carries the copyright; PitFooter stays last in . Co-Authored-By: Claude Opus 5.5 --- bun.lock | 3 +++ package.json | 3 ++- src/app/globals.css | 1 + src/app/layout.tsx | 23 +++++++++++++---------- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/bun.lock b/bun.lock index e55d569..6a1e923 100644 --- a/bun.lock +++ b/bun.lock @@ -5,6 +5,7 @@ "": { "name": "datamart-web", "dependencies": { + "@profullstack/footer": "latest", "hono": "4.13.12", "next": "16.3.8", "react": "19.2.3", @@ -94,6 +95,8 @@ "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.8", "", { "os": "win32", "cpu": "x64" }, "sha512-WcTlaKt/TWkh5kUjdJcUmB1XgZ+1c6fz4Y9fDHL73YNSdGaUWjceeWrrlwF0nv19iABYWC4iAq1oX1w4Bn0vfg=="], + "@profullstack/footer": ["@profullstack/footer@0.2.4", "", { "peerDependencies": { "react": ">=18" }, "optionalPeers": ["react"], "bin": { "profullstack-footer": "bin/profullstack-footer.js" } }, "sha512-2ErIzHJCDA2baP8aK6f7rCHohW4EX+wnp7D1mrVMQTUxRcyZwKzmho96hhEFJndXRBGgxT3H/78BHOeBfLxTzg=="], + "@swc/helpers": ["@swc/helpers@0.5.23", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw=="], "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], diff --git a/package.json b/package.json index 21a7121..374b719 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "datamart-web", - "version": "0.2.1", + "version": "0.2.2", "private": true, "description": "datamart.help: public libraries, schools, colleges and government services near you, with the source of every fact", "license": "MIT", @@ -15,6 +15,7 @@ "smoke": "bun scripts/smoke.ts" }, "dependencies": { + "@profullstack/footer": "latest", "hono": "4.13.12", "next": "16.3.8", "react": "19.2.3", diff --git a/src/app/globals.css b/src/app/globals.css index e235c49..15a712a 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -127,6 +127,7 @@ dl.facts dd { margin: 0; overflow-wrap: anywhere; } .site-footer { border-top: 1px solid var(--line); padding: 1.5rem 0 0.5rem; color: var(--muted); font-size: 0.85rem; } .site-footer nav { display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 0.5rem; } .site-footer p { margin: 0; } +.site-footer + div > .pfs-footer { border-top: 0; } .site-footer a { color: var(--muted); } /* CrawlProof ad unit: no box until ad.js starts filling it, so an unsold or blocked slot leaves no hole. */ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index eef43af..8146247 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import type { Metadata, Viewport } from "next"; +import { Footer } from "@profullstack/footer/react"; import Link from "next/link"; import { AdUnit } from "@/components/ad-unit"; import { PitFooter } from "@/components/pit-footer"; @@ -6,8 +7,8 @@ import { RegisterServiceWorker } from "@/components/register-sw"; import { DISCLOSURE } from "@/lib/site"; import "./globals.css"; -// Pages prerender at build; revalidating hourly lets the pit.world footer -// (fetched server side from pit.world/snippets/footer.html) refresh without a redeploy. +// Pages prerender at build; revalidating hourly lets the shared @profullstack/footer +// template (jsDelivr @latest) and the pit.world footer refresh without a redeploy. export const revalidate = 3600; export const metadata: Metadata = { @@ -68,17 +69,19 @@ export default function RootLayout({ children }: { children: React.ReactNode }) {children} -
+
-

{DISCLOSURE}

-
+ +