Match the site to the approved designs

Denser star field, the page nebula, a favicon package, the filament banner
without its box, the About portrait, Kashi and tea photos and Scorpius, the
Store's own header, a header logo glow, a resume PDF that fills its page,
one divider on the Library and Shelf, star-chart art for coverless
favorites, Shelf Players, Play time and blog filters with a Show all fold,
make kind pills on craft pages, and full-width closing bands.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012aSbo2D1qP8cMFQCykf7kx
This commit is contained in:
Claude
2026-10-12 03:33:15 +00:00
parent 3f6167455d
commit 151bed230a
45 changed files with 671 additions and 166 deletions
+38
View File
@@ -0,0 +1,38 @@
import { describe, expect, it } from "vitest";
import { fitBody } from "../src/lib/resume-pdf.ts";
import type { ResumeData } from "../src/lib/resume.ts";
const role = (n: number) =>
({
path: `Resume/Role ${n}.md`,
title: `Role ${n}`,
data: { type: "experience", title: `Role ${n}`, publish: true, company: "Example Co", role: `Role ${n}`, start: "2019-03", bullets: ["Built a thing that did something useful for people every day.", "Led a small team."] },
}) as unknown as ResumeData["roles"][number];
const base: ResumeData = {
name: "Greg Kilmer",
headline: "Team Lead",
summary: "A short summary.",
stats: [],
roles: [role(1)],
earlier: [],
projects: [],
socials: [],
updated: "2026-10-12",
};
describe("resume PDF fit", () => {
it("opens a short resume up to fill its one page", async () => {
const medium = { ...base, roles: Array.from({ length: 6 }, (_, i) => role(i)) };
const fitted = await fitBody(medium);
expect(fitted.pages).toBe(1);
expect(fitted.end).toBeLessThanOrEqual(792 - 70);
// At normal spacing six short roles end well above the middle of the page.
expect(fitted.end).toBeGreaterThan(560);
});
it("leaves a resume that runs past one page alone", async () => {
const long = await fitBody({ ...base, roles: Array.from({ length: 12 }, (_, i) => role(i)) });
expect(long.pages).toBeGreaterThan(1);
});
});