Commit Graph

8 Commits

Author SHA1 Message Date
Ken 508b2030f7 fix: normalize BASE_URL trailing slash in post links and RSS feed
The Astro BASE_URL (/crashtestdev) lacked a trailing slash, causing
post URLs to render as /crashtestdevposts/... instead of
/crashtestdev/posts/... Breaking article card navigation and RSS feed
links.

Applied the same .replace(/\/?$/, '/') normalization pattern already
used in BaseLayout.astro to:
- ArticleCard.astro (card link hrefs)
- NavBar.astro (isActive path matching)
- rss.xml.ts (item link generation)

Also adds final-verification.test.mjs with 31 tests covering:
- Clean build output structure
- Index page cards, shadows, hover states, URL format
- Post page NavBar active state, PostHeader centering
- Three typography voices (prose/structure/evidence)
- Code block breakout width, warm background, terracotta border
- Design token color compliance
- Responsive behavior (nav stacking, title shrinking, gutter respect)
- RSS feed validity and URL correctness
2026-05-26 23:33:35 +00:00
Ken b836b68ceb feat: add RSS feed endpoint with sorted posts and metadata 2026-05-26 23:25:10 +00:00
Ken 10804705bc feat: build index page with sorted post listing and ArticleCard components
This replaces the smoke test index with a real page that:
- Imports getCollection, BaseLayout, NavBar, ArticleCard, getReadingTime
- Fetches all posts and sorts descending by date
- Maps posts to ArticleCard components with title, date, type, summary, slug, readingTime
- Styles .post-list with prose max-width, space-6/space-12 margins, flex column, space-2 gap

Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-26 23:21:07 +00:00
Ken 8849f638a5 feat: create post page template with dynamic routing and prose wrapper 2026-05-26 23:06:36 +00:00
Ken 3175f27c8a feat: replace index with foundation smoke test page
- Import BaseLayout, NavBar, and PostHeader components
- PostHeader with title 'Speeding Up Webpack Typescript Incremental Builds by 7x',
  date 2019-08-16, type post, readingTime 12
- Three typography voices in prose-width container:
  - Prose voice: Source Serif 4 at 18px (font-prose)
  - Structure voice: Inter at 14px in secondary color (font-structure)
  - Evidence voice: JetBrains Mono with code-text color, surface-code bg,
    rounded-md, accent-primary left border (font-evidence)
- Add build verification test (tests/verify-smoke-page.mjs)
- npm run build succeeds clean
2026-05-26 22:51:49 +00:00
Ken d4b7eeb403 feat: add NavBar component with site name, Posts link, and responsive layout
Created NavBar.astro component with:
- Site name link 'Crash Test Dev' and Posts nav link with active state detection
- aria-label='Site navigation' and aria-current='page' accessibility attributes
- Responsive stacking at 599px breakpoint
- Design token-based styling (structure font, border-subtle, etc.)
- Updated index.astro to include NavBar in nav slot
- Added comprehensive build-output tests (24 assertions)

Generated with Amplifier
Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
2026-05-26 22:46:16 +00:00
Ken 4455a5ed01 feat: create BaseLayout component with global styles and skip navigation
- Created src/layouts/BaseLayout.astro as the site's base layout component
- Imports tokens.css and fonts.css for design system and typography
- Accepts Props {title: string, description?: string}
- Computes page title (appends ' — Crash Test Dev' unless title is already 'Crash Test Dev')
- Reads import.meta.env.BASE_URL for RSS link generation
- HTML structure: doctype, html lang=en, head with charset/viewport/description meta, computed title, RSS link alternate
- Body: skip-to-content link, named nav slot, main#main-content with default slot
- Global styles: CSS reset, body typography, link styles, skip-link, main container, ::selection
- Updated src/pages/index.astro to use BaseLayout with inline style placeholders demonstrating tokens/fonts
- Added tests/check-base-layout.mjs build-output test with 23 assertions, all passing
2026-05-26 22:43:02 +00:00
Ken cf0c07f2a9 feat: scaffold Astro project replacing Gatsby
- Remove gatsby-config.js, yarn.lock, src/gatsby-theme-blog/
- Create package.json with astro, @astrojs/mdx, @astrojs/rss deps
- Create astro.config.mjs with site/base for GitHub Pages
- Create tsconfig.json extending astro/tsconfigs/strict
- Create src/env.d.ts with astro/client reference
- Create minimal src/pages/index.astro placeholder
- Update .gitignore: replace gatsby section with astro (dist/, .astro/)
- Add scaffold verification tests
- Verified: npm run build succeeds with output in dist/
2026-05-26 22:32:22 +00:00