From 78c2ee656e870f0df580086b9fa64d9bbd1b7a95 Mon Sep 17 00:00:00 2001
From: Ryan Salazar
Date: Thu, 21 May 2026 01:51:29 +0000
Subject: [PATCH] homepage: typography upgrade + ArticleFeed polish
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- layout.tsx: load Lora (serif) + Inter (sans) via next/font/google,
self-hosted at build time, exposed as --font-serif / --font-sans
CSS variables on . No CDN fetch, no FOIT, no GDPR concern.
- tailwind.css: --font-heading and --font-body now reference the
next/font variables with Georgia / -apple-system fallbacks for the
brief window before the self-hosted face is ready. --font-mono
upgraded to IBM Plex Mono → ui-monospace → Courier New fallback
(DoubleTicker chips already specify IBM Plex Mono directly).
- ArticleFeed: drop the FEATURED filter chip (duplicates the
Staff Editorial section above), add publish date alongside the
byline on every card, lift the homepage feed cap from 200 → 5000.
- api/public/posts: lift MAX_LIMIT to 10000 so client-side
pagination + infinite-scroll see the full archive.
---
src/app/api/public/posts/route.ts | 5 ++++-
src/app/home-page/components/ArticleFeed.tsx | 16 +++++++++++----
src/app/layout.tsx | 21 +++++++++++++++++++-
src/styles/tailwind.css | 9 ++++++---
4 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/src/app/api/public/posts/route.ts b/src/app/api/public/posts/route.ts
index e380f15..03237bb 100644
--- a/src/app/api/public/posts/route.ts
+++ b/src/app/api/public/posts/route.ts
@@ -3,7 +3,10 @@ import { getLatestImportedArticles } from "@/lib/articles/legacy-source";
export const revalidate = 300;
-const MAX_LIMIT = 200;
+// Homepage feed now renders every imported post; pagination + infinite-
+// scroll happen client-side over the full set. Keep an absolute ceiling
+// only as a safety valve, not a UX cap.
+const MAX_LIMIT = 10000;
const DEFAULT_LIMIT = 100;
export async function GET(request: Request) {
diff --git a/src/app/home-page/components/ArticleFeed.tsx b/src/app/home-page/components/ArticleFeed.tsx
index 76f1fb6..b561736 100644
--- a/src/app/home-page/components/ArticleFeed.tsx
+++ b/src/app/home-page/components/ArticleFeed.tsx
@@ -26,7 +26,7 @@ interface ArticleItem {
-const ALL_CATEGORIES = ["All", "BROADCAST", "FEATURED", "POST PRODUCTION", "ANIMATION"];
+const ALL_CATEGORIES = ["All", "BROADCAST", "POST PRODUCTION", "ANIMATION"];
const SOURCE_FILTERS = ["All", "Live", "Imported"] as const;
type SourceFilter = typeof SOURCE_FILTERS[number];
type FeedMode = "pagination" | "infinite";
@@ -94,7 +94,7 @@ export default function ArticleFeed() {
let cancelled = false;
(async () => {
try {
- const res = await fetch("/api/public/posts?limit=200", { cache: "no-store" });
+ const res = await fetch("/api/public/posts?limit=5000", { cache: "no-store" });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const json = await res.json();
const items = Array.isArray(json?.items) ? (json.items as ArticleItem[]) : [];
@@ -613,11 +613,19 @@ export default function ArticleFeed() {
{article?.excerpt}
-
+
-
+
By {article?.author}
+ {article?.date && (
+ <>
+ ·
+
+ >
+ )}
) {
return (
-
+
{/* hreflang entries removed pending real i18n routes (Phase D). */}
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
index 7d09c02..d5d00b2 100644
--- a/src/styles/tailwind.css
+++ b/src/styles/tailwind.css
@@ -17,9 +17,12 @@
--color-border: #2a2a2a;
--color-top-bar: #1a2535;
--color-sub-nav: #161c28;
- --font-heading: Georgia, 'Times New Roman', serif;
- --font-body: Arial, Helvetica, sans-serif;
- --font-mono: 'Courier New', Courier, monospace;
+ /* --font-serif and --font-sans are injected on by next/font/google
+ (Lora + Inter) in src/app/layout.tsx. The system-font tails are real
+ fallbacks for the brief window before the self-hosted face is ready. */
+ --font-heading: var(--font-serif), Georgia, 'Times New Roman', serif;
+ --font-body: var(--font-sans), -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
+ --font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, Consolas, 'Courier New', monospace;
--transition-fast: 0.18s ease;
--transition-base: 0.25s ease;
--transition-slow: 0.4s ease;