diff --git a/TODO.md b/TODO.md
index 490f7d3..3f297a0 100644
--- a/TODO.md
+++ b/TODO.md
@@ -69,18 +69,26 @@ approved plan for full rationale on each decision referenced below.
header/nav with active-link state, theme toggle, footer with social
links. Verified light + dark in-browser across home, a writing
detail page (TOC/headings), bookshelf, and 404
-- [ ] Homepage redesign around the Three.js centerpiece as hero — next up
+- [x] Homepage redesign around the Three.js centerpiece as hero — the
+ constellation sits above a 3-column dashboard (latest writings,
+ portfolio, bookshelf), verified rendering and hover/click working
+ in-browser
- [x] New 404 page concept (terminal easter egg retired) — "Page Fault",
now fully styled with the rest of the design system
## Three.js centerpiece
-- [ ] Decide the constellation/node-graph data model (what nodes/edges
- represent — writings ↔ portfolio ↔ beliefs connections)
-- [ ] Build as an isolated Astro island
-- [ ] Static image/CSS fallback for `prefers-reduced-motion` and low-end
- devices
-- [ ] Perf budget check on a low-end/mobile profile
+- [x] Constellation data model: nodes are real content entries (writings,
+ portfolio, bookshelf), edges are shared-tag connections — the same
+ relationship "related posts" already uses, drawn instead of listed.
+ No decorative/fake data. `src/lib/constellation-data.ts`
+- [x] Built as an isolated component (`Constellation.astro` + a plain
+ client `
diff --git a/apps/site/src/layouts/Base.astro b/apps/site/src/layouts/Base.astro
index 3ce2f34..e3bfb90 100644
--- a/apps/site/src/layouts/Base.astro
+++ b/apps/site/src/layouts/Base.astro
@@ -8,8 +8,10 @@ import { siteConfig } from "../site.config";
interface Props {
title: string;
description?: string;
+ /** Widens .container for dashboard-style layouts (currently just the homepage). */
+ wide?: boolean;
}
-const { title, description } = Astro.props;
+const { title, description, wide = false } = Astro.props;
const metaDescription = description ?? siteConfig.description;
const currentPath = Astro.url.pathname;
---
@@ -109,7 +111,7 @@ const currentPath = Astro.url.pathname;
-
+
{siteConfig.author.toUpperCase()}