Skip to content

feat(authors): opt-in author profiles with avatars, taglines, bios, links#27

Merged
HeyItsGilbert merged 7 commits into
mainfrom
feat/author-profiles
Jun 21, 2026
Merged

feat(authors): opt-in author profiles with avatars, taglines, bios, links#27
HeyItsGilbert merged 7 commits into
mainfrom
feat/author-profiles

Conversation

@HeyItsGilbert

Copy link
Copy Markdown
Member

What

Lets authors describe themselves, turning the author list and profile pages from generic name+count cards into something richer — without migrating the 1,045 content files that credit authors today.

An author opts in by adding a taxonomy term content file at content/authors/<slug>/_index.md. No file = unchanged behavior.

Design

Decision record: docs/adr/0002-author-profiles.md. Glossary terms (Author, Profile, name-vs-preferred-name) added to CONTEXT.md.

The load-bearing choice: the display name stays the key in authors: frontmatter (correct byline + slug for all 80 authors, zero migration). A profile's optional preferred_name overrides display only. We explicitly rejected storing slugs in frontmatter (would mangle the ~70 un-enriched authors and force a repo-wide migration).

Changes

  • Avatar (partials/author-avatar.html): avatargravatar_hashemail → name-seeded identicon. Email is MD5-hashed at build, so a raw email is never required in the repo; the privacy-conscious can supply gravatar_hash instead.
  • Links (partials/author-links.html): website/github/twitter/mastodon/linkedin/bluesky, unset links skipped.
  • List page: enriched profiles sort first, then by count; cards show avatar + tagline + links; search matches name and tagline.
  • Profile page: avatar + preferred-name hero, links header, Markdown bio.
  • archetypes/authors.md: full commented schema.
  • tools/new-author.ps1: scaffolds a profile at the correct Hugo slug; -To rename mode rewrites the byline across content and adds an aliases redirect.
  • Orphan guard: build-time warnf when a profile's slug matches no author.

Testing

  • hugo builds clean.
  • Verified end to end with a temporary profile: Gravatar hash matches the email, preferred_name overrides display, links/bio render, and the enriched card sorts ahead of higher-count bare authors.
  • Confirmed the orphan warning fires on a mismatched slug and is silent on a clean build.
  • Ships with zero profiles (opt-in); all 80 existing authors render unchanged.

🤖 Generated with Claude Code

HeyItsGilbert and others added 2 commits June 20, 2026 17:37
Capture the decision to enrich author taxonomy term pages with opt-in
profile content files, keeping the display name as the frontmatter key
with an optional preferred-name override (X over Y).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…inks

Authors can now describe themselves via an optional taxonomy term content
file at content/authors/<slug>/_index.md:

- Avatar resolution avatar -> gravatar_hash -> email -> identicon fallback
  (author-avatar.html partial; email hashed at build so a raw email is never
  required in the repo).
- Social links partial (website/github/twitter/mastodon/linkedin/bluesky).
- preferred_name overrides display only; the authors: byline stays the key,
  so un-enriched authors render unchanged (no migration of 1,045 files).
- List page: enriched profiles sort first, then by count; cards show avatar +
  tagline + links; search matches name and tagline.
- Profile page: avatar + preferred name + links header + Markdown bio.
- new-author.ps1 scaffolds a profile at the correct Hugo slug and supports
  renames (rewrites the byline across content + adds an aliases redirect).
- Build-time warning when a profile's slug matches no author (orphan guard).

Updated archetypes/authors.md to the full commented schema.
See docs/adr/0002-author-profiles.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@netlify

netlify Bot commented Jun 21, 2026

Copy link
Copy Markdown

Deploy Preview for powershellorg ready!

Name Link
🔨 Latest commit 9ad4917
🔍 Latest deploy log https://app.netlify.com/projects/powershellorg/deploys/6a37770a53a63a000866f08c
😎 Deploy Preview https://deploy-preview-27--powershellorg.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

CONTRIBUTING.md gains an "Adding Your Author Profile" section covering the
slug rule, new-author.ps1, the gravatar_hash recipe, and renames. Adds the
first real profile (gilbert-sanchez), using gravatar_hash to keep the email
out of the repo.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@HeyItsGilbert HeyItsGilbert enabled auto-merge (squash) June 21, 2026 02:03
HeyItsGilbert and others added 3 commits June 20, 2026 19:07
Website, Mastodon, LinkedIn, and Bluesky from links.gilbertsanchez.com
(no Twitter/X listed there). Point the Gallery link at the real profile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Long taglines wrapped raggedly on the author list. Clamp to two lines so a
truncated tagline shows a trailing ellipsis, signalling more on the profile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
## What

Adds an **About the Author** section to the bottom of article and
podcast pages, sourced from the author's profile (the taxonomy term
content file introduced in #27).

> **Stacked on #27** (`feat/author-profiles`). Review/merge that first;
this PR's base is `feat/author-profiles`, so the diff here is just the
article section.

## Behavior

- For each author credited in `authors:` who has **opted into a
profile**, renders a card with avatar, preferred name, tagline, bio,
social links, and a "View profile" link.
- Articles whose authors have **no profile** are unchanged — no empty
section.
- Co-authored posts show a card per enriched author (heading
pluralizes); un-enriched co-authors are simply omitted.
- Reuses the `author-avatar` and `author-links` partials from #27.

## Cleanup

Replaces the legacy per-article `author_bio` front-matter block — which
**0 articles** used and which rendered a generic placeholder icon — with
the profile-sourced partial.

## Testing

- `hugo` builds clean.
- Verified on a podcast episode crediting an enriched author (Gilbert
Sanchez): the section renders with the Gravatar, tagline, bio,
Mastodon/LinkedIn icons, and profile link.
- Verified an article by an un-enriched author renders **no** About
section.
- Verified an episode that only name-drops an author in the title (not
in `authors:`) gets no section.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@HeyItsGilbert HeyItsGilbert disabled auto-merge June 21, 2026 05:32
@HeyItsGilbert HeyItsGilbert merged commit 957c1e1 into main Jun 21, 2026
5 checks passed
@HeyItsGilbert HeyItsGilbert deleted the feat/author-profiles branch June 21, 2026 05:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant