Skip to content

Releases: maxfelker/maxfelker.com

v0.6 — Mobile Experience Overhaul & Clarity

16 Jun 07:53
a6a698a

Choose a tag to compare

The site is mobile-first now, with analytics. v0.5 added video articles; v0.6 overhauls the mobile experience, fixes a stubborn dark-mode background split, and turns on Microsoft Clarity. Closes #37 and #9.

Highlights

Mobile experience (#37)

  • Full-bleed media — hero images, inline images, and embedded video span the full viewport width on phones and landscape through iPad mini (≤1024px).
  • No more bounding-border dead space — fluid side padding (clamp(2rem, 5vw, 4rem)), equidistant with the 2rem top/bottom; rem-based ~1rem vertical rhythm; tighter title/article-top spacing.
  • Theme — unified #010101 background, pink links (#ff4ac8, visited #cc3ba0).
  • Zoom + meta — locked viewport (no pinch/double-tap jitter) plus mobile meta tags (theme-color, app-capable, status-bar, format-detection).
  • Home hero redesign — circular profile photo (left of the tagline on desktop, stacked + centered on mobile), tagline header, and a pill Learn More CTA.

The background split — pixel sampling showed #060606 content vs #010101 canvas: Chrome's Auto Dark Theme was force-darkening our already-dark page. Declaring color-scheme: dark opts the page out and keeps it uniformly #010101.

Analytics (#9)

  • Microsoft Clarity via @microsoft/clarity (project x7s0rggs25, override VITE_CLARITY_ID), production-only.

Notes / follow-ups

  • Google Analytics (gtag) still runs alongside Clarity — drop one when ready.
  • profile-pic.png is ~725 KB; worth compressing for mobile.

Closed in this release: #37, #9

Full changelog: v0.5.0...v0.6.0

v0.5 — Video Articles & Smarter Unfurls

16 Jun 03:10
e407379

Choose a tag to compare

Articles can now lead with video, and links unfurl smarter. v0.4 made previews rich; v0.5 adds the first video article (the Microsoft Build talk), auto-thumbnails video links, and widens the reading layout.

Highlights

MS Build cloud-native talk, now its own article (#33)

  • The Microsoft Build 2024 session (BRK254) moves off the About page into a dedicated article — the video embed is the main content up top, with a short summary below. Dated to the YouTube publish date (2024-05-24). First step of the #10 cleanup (article-like content → its own stub).

Smarter unfurl image for video articles

  • parse() now separates the displayed hero from the preview image: an explicit image: wins, otherwise a video article falls back to the embedded video's YouTube thumbnail. So video links unfurl as a rich summary_large_image card without rendering a redundant hero on the page.

Wider, tighter layout

  • Content container widened ~30% (home 650→845, article 680→884, about 800→1040).
  • Article page top spacing cut from 8rem to 3rem, removing the dead space above the title.

Notes / follow-ups

  • maxresdefault thumbnails exist for most uploads; if a future video only has hqdefault, set an explicit image: on that article.
  • About-page trim and Clarity analytics are tracked separately (#10, #9).

Closed in this release: #33

Full changelog: v0.4.0...v0.5.0

v0.4 — Rich Social Previews & Article Images

16 Jun 01:57
e25e28b

Choose a tag to compare

Article links now unfurl with rich previews. v0.3 made the site a publishing platform; v0.4 makes shared article links look the part — real social/SMS cards with a hero image — and lets articles carry images. Completes feature #7.

Highlights

Rich social previews via build-time prerender (#7, #20)

  • Crawlers (Facebook, X, iMessage, Slack) don't run JS, so the SPA's <head> was invisible to them. A post-build step now writes dist/article/<slug>.html — the shell with per-article og:* + twitter:* tags baked in. nginx serves it via try_files $uri.html with no redirect; real users still get the SPA.

Hero + inline images, co-located with the Markdown

  • Each article is now a folder: articles/<slug>/index.md plus its images alongside.
  • image: hero.jpg sets a hero shown atop the article AND used as the og:image/twitter:image (card upgrades to summary_large_image). Inline ![alt](figure.jpg) images render responsively.
  • Authors reference images by bare filename; they resolve to a stable /articles/<slug>/<file> path — served by a small Vite dev middleware locally and copied into dist for prod.

Notes / follow-ups

  • SMS/iMessage unfurl (#8) rides on the same prerendered tags — what's left there is verification + a pre-publish checklist (#21).
  • Home-page list is still text-only; hero thumbnails are an easy future add.

Closed in this release: #7, #20

Full changelog: v0.3.0...v0.4.0

v0.3 — Markdown Articles & Durable Article URLs

15 Jun 23:25
021b464

Choose a tag to compare

The content platform is live. v0.2 was the foundation; v0.3 makes MaxFelker.com an actual publishing site — Markdown articles render from the repo at durable URLs, with the first article migrated off Medium. Completes feature #6.

Highlights

Markdown articles from the repo (#6, #18)

  • Articles are plain Markdown files in articles/. Vite's native import.meta.glob reads them at build time, parses frontmatter (title, summary, date, slug, optional image), and renders the body with marked. One small dependency, no CMS, no server.
  • A Node self-check (src/articles.test.mjs) covers the frontmatter parser.

Durable article pages (#17)

  • Each article is served at /article/:slug, resolved against the loaded set, with a graceful not-found and back-home nav.

First article

  • Why you should never schedule agile ceremonies on Monday or Friday (2024-02-15), migrated from Medium as the first real piece.

Authoring workflow (#19)

  • articles/README.md documents how to add an article and every frontmatter field.

Fixes

  • The dev container never received articles/ (Dockerfile.dev and compose mounted files individually) — added the copy + mount so local dev and hot-reload work.
  • Article list came back empty because import.meta.glob was behind a runtime typeof guard; it's a compile-time macro, so the guard always took the empty branch. Now called unconditionally, with parse() split into frontmatter.js for the Node test. Verified rendering in a clean browser for both dev and the production image.

Notes / follow-ups

  • Home-page article list is feature #4 — the loader already exports a date-sorted articles array for it.
  • Social/SMS unfurl (#7/#8) still needs build-time prerender; article <head> meta is client-rendered today.

Closed in this release: #6, #17, #18, #19

Full changelog: v0.2.1...v0.3.0

v0.2.1 — Tag-Driven Deploy Working

15 Jun 23:07
ec3a754

Choose a tag to compare

Patch release that proves out the deploy pipeline. v0.2 shipped but never reached Azure — the workflow still triggered on the dead may-2025 branch. #26 rewired it to fire on v* tags; this tag is the first to exercise that path end to end.

What changed

  • Version bump 0.2.0 → 0.2.1 to cut a fresh tag.
  • First successful tag-driven deploy: build → push :v0.2.1 + :latest to ACR → deploy to the Azure Web App (build ✓, deploy ✓).

Notes

  • Future tags (v0.3, …) now deploy automatically on push.
  • GitHub will force Actions onto Node 24 on 2026-06-16; the pinned actions still run but should be bumped in a later minor.

Full changelog: v0.2...v0.2.1

v0.2 — Phase 1 Foundation: Toolchain Current & Text-First Layout

15 Jun 22:52
e665fe6

Choose a tag to compare

The site's foundation is current again, and the decoration is gone. v0.1 was the gradient portfolio; v0.2 drags the toolchain forward two majors across the board and strips the site back to a readable text column — the groundwork for article publishing (epic #2). Completes the Phase 1 foundation feature (#3).

Highlights

Dependencies, two majors forward

  • Vite 4 → 7 and @vitejs/plugin-react 3 → 5 (#11). Build verified clean after the jump.
  • React 18 → 19 and react-router-dom 6 → 7 (#12). The createBrowserRouter / RouterProvider API is unchanged, so both routes carried over untouched.

Runtime & CI off EOL (#13, #14)

  • Docker base image node:18-alpinenode:22-alpine — Node 18 is end-of-life — and nginx pinned to 1.27-alpine instead of a floating tag. Release image build verified on node 22.
  • GitHub Actions bumped to current majors: checkout@v4, setup-buildx@v3, login@v3, build-push@v6, webapps-deploy@v3.

Text-first layout (#15)

  • Deleted the pulsing gradient background and the fade / scale / blur entrance animations, plus the now-unused App CSS module.
  • CSS payload dropped ~58% (2.28 kB → 0.95 kB). The result is a plain readable reading column — the "text-first" baseline the article work sits on.

Notes / follow-ups

  • Social & SMS unfurl (#7 / #8) will need build-time prerendering — this SPA can't emit per-article <head> meta that crawlers see at runtime. That's the load-bearing decision for the next slice of epic #2.
  • Analytics: Google Analytics (gtag) is still in index.html. The Clarity task (#9) should reconcile that before stacking a second tracker.
  • Security: a maxfelker.pem bundling a private key was briefly committed and has been purged from history — the key was pushed and should be rotated regardless.

Closed in this release: #3, #11, #12, #13, #14, #15

Full changelog: v0.1...v0.2