news relaunch step 1: extract the feed into NewsFeed.svelte, mount at / and /news

Pure refactor, no visible/behavioral change. The ~1065-line feed moves verbatim
from routes/+page.svelte into lib/components/NewsFeed.svelte; both routes/+page
and the new routes/news render it. Link generation is base-aware (feedBase()):
on `/` it builds `/?…` exactly as today (bug-for-bug parity); on `/news` it
builds `/news?…` so /news is self-coherent. At cutover, `/` becomes the hub and
the feed lives only at /news.

/news is kept hidden during the transition (noindex, follow) so we never publish
a duplicate indexable feed: route <meta robots> + a Caddy @newsHidden X-Robots-Tag
(follow, so link equity flows). Removed at cutover, when /news enters the sitemap.

27/27 frontend tests green; build clean; /news.html prerenders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jay
2026-06-28 14:11:06 -04:00
parent 099bf55711
commit f4a7a7bcc7
4 changed files with 1087 additions and 1062 deletions
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+12
View File
@@ -0,0 +1,12 @@
<script>
// /news — the feed's permanent home. During transition it renders the SAME extracted
// NewsFeed as `/` and stays hidden (noindex) so we never publish a duplicate indexable
// surface. At cutover the noindex is dropped and /news enters the sitemap.
import NewsFeed from '$lib/components/NewsFeed.svelte';
</script>
<svelte:head>
<meta name="robots" content="noindex, follow" />
</svelte:head>
<NewsFeed />