diff --git a/services/hub-backend/src/hub.ts b/services/hub-backend/src/hub.ts index 14f887d..d19c85d 100644 --- a/services/hub-backend/src/hub.ts +++ b/services/hub-backend/src/hub.ts @@ -107,6 +107,7 @@ function privateRedirect(location: string): Response { } function page(summaries: Map> | null, origin: string): string { + const publicLanding = summaries === null; const cards = PRODUCTS.map((product, index) => { const summary = summaries?.get(product.id); const count = typeof summary?.activeCount === "number" ? `${summary.activeCount} records` : null; @@ -211,7 +212,9 @@ function page(summaries: Map> | null, origin: st -
+ ${publicLanding ? '
' : ""} + ${publicLanding ? `` : ""} + ${publicLanding ? '" : "
"} + ${publicLanding ? `
- - + + ` : ""} `; @@ -389,6 +394,8 @@ h1{max-width:970px;margin-bottom:34px;font-size:clamp(3.5rem,7vw,7rem);line-heig .footer-columns a{text-underline-offset:4px} .footer-columns span{color:var(--muted)} .footer-fineprint{margin:0;padding-top:22px;border-top:1px solid var(--line);color:var(--muted);font-size:.75rem;line-height:1.55} +.site-footer.site-footer--precise-navigation{max-width:none;margin:0;padding:0;border:0} +.site-footer--precise-navigation .footer-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:32px 0 26px;padding-top:0;border-top:0} a:focus-visible{outline:3px solid var(--accent);outline-offset:4px} @media(max-width:900px){ .hero{grid-template-columns:96px 1fr}.hero-index{padding-inline:20px}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.connection{grid-template-columns:1fr}.connection-intro{border-right:0;border-bottom:1px solid var(--line)}.proof-heading{grid-template-columns:1fr}.proof-grid{grid-template-columns:repeat(2,1fr)} diff --git a/services/hub-backend/test/hub-session.test.ts b/services/hub-backend/test/hub-session.test.ts index f73a636..ff686b0 100644 --- a/services/hub-backend/test/hub-session.test.ts +++ b/services/hub-backend/test/hub-session.test.ts @@ -38,6 +38,11 @@ describe("private Hub session entry", () => { })); expect(response.status).toBe(200); expect(response.headers.get("cache-control")).toBe("private, no-store"); - expect(await response.text()).toContain("Private read-only Hub"); + const source = await response.text(); + expect(source).toContain("Private read-only Hub"); + expect(source).toContain('