Commit Graph

272 Commits

Author SHA1 Message Date
svemagie
40cc35ca39 style: switch accent from Gruvbox blue to Gruvbox yellow; fix Tended layout
- Replace accent palette (#076678 blue → #b57614 yellow light,
  #83a598 green → #fabd2f yellow dark) across config, critical CSS,
  pagefind overrides, and all hardcoded hex references
- Stack post meta rows (Planted / Tended) vertically via flex-col

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 15:28:43 +01:00
svemagie
1ed4cb4663 style: serve Lora locally, lighten bg, bump article font size
- Install @fontsource/lora and serve latin/latin-ext woff2 files
  (weights 400/700, normal + italic) via Eleventy passthrough copy
- Lora now leads the serif font stack in Tailwind and critical CSS,
  with Iowan Old Style / Palatino as system-font fallbacks
- Light-mode background lightened: #fbf1c7 → #fefcf0 (still warm,
  noticeably less yellow)
- Article prose bumped: post.njk prose-lg, page.njk prose-xl

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 14:59:03 +01:00
svemagie
66414d8cd6 style: adopt Gruvbox-inspired palette and serif typography
Inspired by brennan.day — warm cream backgrounds (#fbf1c7),
Iowan Old Style/Palatino serif font, Gruvbox blue accent (#076678),
and matching code syntax theme in both light and dark modes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:33:58 +01:00
svemagie
d9ac9bffc5 feat: add soft-delete filter and content-warning support
Filter posts with `deleted: true` from all collections so soft-deleted
posts no longer appear on the blog. Add content-warning support: on
listing pages, CW posts show a warning label instead of content; on
single post pages, content is wrapped in a collapsible <details>.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 00:59:19 +01:00
svemagie
2a2d4f68ac feat: filter self-Bluesky interactions from sidebar webmentions widget
Apply the same isSelfBsky() filter already used in post-interactions.njk
to the sidebar webmentions widget, hiding own Bluesky account entries
from both the conversations and webmentions merge loops.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 08:04:28 +01:00
svemagie
63b1c0bca6 fix(design): add whitespace 2026-03-17 07:54:44 +01:00
svemagie
ca8362d1ee fix(blog): move tags and garden badge inline with Planted date
Tended date now appears on its own line below, matching the desired
layout: Planted + tags + badge on line 1, Tended on line 2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 07:48:27 +01:00
svemagie
52b453a5b5 feat(blog): add Planted/Tended date labels to post template
Show "Planted:" before publish date and "Tended:" with the updated date
when posts have an `updated` front matter field. Also updates JSON-LD
dateModified to use the updated date when available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 07:37:17 +01:00
svemagie
46d99170d4 fix(webmentions): rename h2 to Interactions and apply text-lg font-semibold style
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 01:04:45 +01:00
svemagie
216073cf8f refactor(post): replace custom Interactions with Webmentions section, renamed to Interactions
Remove post-interactions.njk include and rename the Webmentions heading to "Interactions".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-16 00:51:22 +01:00
svemagie
a166af2306 chore: sync upstream — performance, webmentions v2, OG v3
- _data: switch to cachedFetch wrapper (10s timeout + 4h watch cache)
- js/webmentions.js: owner reply threading, platform provenance badges, DOM dedup, Micropub reply support
- js/comments.js: owner detection, reply system, Alpine.store integration
- _includes/components/webmentions.njk: data-wm-* attrs, provenance badge slots, reply buttons
- _includes/components/comments.njk: owner-aware comment form, threaded replies
- widgets/toc.njk: Alpine.js tocScanner upgrade (replaces is-land/inline-JS)
- lib/og.js + og-cli.js: OG card v3 (light theme, avatar, batched spawn, DESIGN_VERSION=3)
- eleventy.config.js: hasOgImage cache, memoized date filters, batched OG/unfurl, post-build GC, YouTube check opt
- base.njk: Inter font preloads + toc-scanner.js script
- critical.css: font-face declarations (font-display:optional)
- tailwind.css: font-display swap→optional
- tailwind.config.js: prose link colors -700→-600
- Color design system: accent-700/300 → accent-600/400 across components

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 23:56:56 +01:00
svemagie
ba1dba4661 feat: integrate eleventy-plugin-mermaid for diagram support
Adds @kevingimbel/eleventy-plugin-mermaid so mermaid fenced code blocks
render as interactive diagrams in the browser.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 13:01:01 +01:00
svemagie
e8ba3b9ae6 feat: nested tags (Obsidian-style) for categories system
Adds hierarchical tag support using "/" separator (e.g. "tech/programming/js").
- New filters: nestedSlugify, categoryMatches, categoryBreadcrumb,
  categoryGroupByRoot, categoryDirectChildren
- categories collection auto-generates ancestor pages for nested tags
- categories.njk: breadcrumb nav, sub-tags section, ancestor-aware post matching
- categories-index.njk: grouped tree view (root + indented children)
- categories widget: shows root tags only with child count badge
- All category links updated from slugify → nestedSlugify (backward-compatible)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 10:56:34 +01:00
svemagie
04b6ed1217 feat: derive gardenStage from nested tags (garden/cultivate)
- eleventyComputed in content.11tydata.js resolves gardenStage from
  category/tags at build time — no explicit gardenStage frontmatter needed
- withoutGardenTags filter strips garden/* from category pill rendering
- categories collection excludes garden/* entries (no phantom category pages)
- All list templates and post layout use withoutGardenTags filter
2026-03-15 09:41:18 +01:00
svemagie
01a36d4163 feat: show garden badge in all post list views and overviews
- garden-badge.njk now resolves stage from post.data.gardenStage in
  list contexts (no set required), or gardenStage in post page context
- Badge added after categories in: blog, articles, notes, photos,
  bookmarks, likes, replies, reposts, recent-posts section
- Badge is clickable, links to /garden/#<stage>
2026-03-15 09:04:29 +01:00
svemagie
43101e622a feat: add /garden to nav, evergreen stage, remove /where from nav
- Add /garden as first item in Pages dropdown (desktop + mobile)
- Remove /where from nav dropdown
- Add evergreen (🌳) garden stage to filter, CSS badge, and garden page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-15 08:51:01 +01:00
svemagie
f8bceb9e20 small visual fix 2026-03-14 20:55:05 +01:00
svemagie
558c125a49 footer: remove Eleventy from Powered by 2026-03-14 20:54:00 +01:00
svemagie
aca2e97be2 footer: add coffee icon after Eleventy in Powered by 2026-03-14 20:51:51 +01:00
svemagie
69a0442aa5 fix(widgets): use full Bluesky self-filter logic for sidebar webmentions (did:plc + bsky.app/profile) 2026-03-14 20:05:23 +01:00
svemagie
f08e267f25 fix(widgets): hide own Bluesky handle (svemagie.bsky.social) from sidebar webmentions 2026-03-14 19:52:21 +01:00
svemagie
31d2ec0e4e chore: opt out of fed.brid.gy (meta tag + nginx header instructions) 2026-03-14 19:45:26 +01:00
svemagie
48da3404ea feat: Garden dev 0.1 2026-03-14 16:53:31 +01:00
svemagie
3a8c24eb7f Merge branch 'main' of github.com:svemagie/blog 2026-03-14 16:16:32 +01:00
svemagie
7f4e8c93e2 fix(a11y): fix WCAG AA contrast and WCAG 2.5.3 failures from third report
- css/tailwind.css: upgrade nav/mobile-nav/theme-toggle text from
  surface-600 (fails 4.5:1) to surface-700 across .site-nav, .nav-dropdown-menu,
  .menu-toggle, .mobile-nav, .mobile-nav-toggle, .theme-toggle, .mobile-theme-toggle
- post.njk: fix AI disclosure details and 'Also on:' span to surface-700
- webmentions.njk: fix summary to surface-700; fix Send button from
  bg-accent-600 (3.18:1) to bg-accent-700 (4.95:1)
- h-card.njk: fix p-adr address and PGP key link to surface-700
- base.njk: fix mobile theme toggle aria-label per WCAG 2.5.3
- post-categories.njk: fix category pills text-accent-700 to text-accent-800
- post-navigation.njk: fix no-OG fallback Previous/Next labels to surface-700

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 16:13:06 +01:00
svemagie
9a48c73705 fix: filter own Bluesky self-interactions from per-note Interactions section 2026-03-14 15:55:35 +01:00
svemagie
856792ebbe fix(a11y): sweep all remaining accent-600 contrast failures across all components, pages, CSS and JS
Bump all text-accent-600/dark:text-accent-400 to accent-700/300 for WCAG AA.
Bluesky brand blue fixed: #0085ff -> #0057c7 (light) / keep #0085ff (dark).
37 files changed across widgets, sections, layouts, pages, CSS and JS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 15:47:09 +01:00
svemagie
d2fa2fb809 fix(a11y): improve colour contrast and fix semantic heading elements
- Bump all post-type label colours from -600 to -700 (light) and
  -400 to -300 (dark) in blog.njk to meet WCAG AA/AAA contrast
  ratios (green/teal/sky labels were failing AA at ~3-4:1)
- Replace four <p role="heading" aria-level="2"> in footer with
  real <h2> elements for robust screen-reader support
- Bump footer link text from surface-600 to surface-700 (light)
  and surface-400 to surface-300 (dark)
- Update hero.njk accent job-title and "Read more" link from
  accent-600 to accent-700 / accent-400 to accent-300
- Update Tailwind typography prose link token from accent-600/400
  to accent-700/300
- Tighten .p-category and .post-meta base styles in tailwind.css
  (surface-600→700 light, surface-300→200 / surface-400→300)
- Bump hashtag link colours in tailwind.css (accent-600→700)
- Fix sparkline colour in notes.njk (teal-600→700 / teal-400→300)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 15:28:43 +01:00
svemagie
d9494a798b fix: Dashboard link 2026-03-14 15:02:54 +01:00
svemagie
c087742237 fix: replace broken /dashboard links with / (Indiekit admin home)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 07:03:03 +01:00
svemagie
5ee87e11a9 feat: make tags clickable in all overview/listing pages
Replace plain <span class="p-category"> with <a href="/categories/{slug}/"> across all post listing pages and the recent-posts component.

Affected: articles, blog, notes, likes, reposts, replies, bookmarks, photos, recent-posts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 12:13:24 +01:00
svemagie
9088f3b01d Revert "fix: hide private and where/Loc notes from public overviews and collections"
This reverts commit f04c48e3cb.
2026-03-12 12:01:13 +01:00
svemagie
5099455313 Revert "feat: make tags in Recent Posts clickable and link to /categories pages"
This reverts commit 61cd9cdec2.
2026-03-12 12:01:13 +01:00
svemagie
4e353285b6 Revert "fix: normalize category/tags arrays in isListed and excludeWhereNotes to prevent .map errors"
This reverts commit 841f2650c6.
2026-03-12 12:01:13 +01:00
svemagie
b8876514f7 Revert "fix: restore Recent Posts section with fallback if all posts filtered"
This reverts commit 970ecb42c5.
2026-03-12 12:01:13 +01:00
svemagie
81737d26a4 Revert "chore: add debug output to homepage Recent Posts section for troubleshooting"
This reverts commit 2ded64b408.
2026-03-12 12:01:13 +01:00
svemagie
479eca6fe8 Revert "fix: pass collections context to homepage Recent Posts section for correct rendering"
This reverts commit d03ec5bd86.
2026-03-12 12:01:13 +01:00
svemagie
d03ec5bd86 fix: pass collections context to homepage Recent Posts section for correct rendering 2026-03-12 11:45:34 +01:00
svemagie
2ded64b408 chore: add debug output to homepage Recent Posts section for troubleshooting 2026-03-12 11:43:06 +01:00
svemagie
970ecb42c5 fix: restore Recent Posts section with fallback if all posts filtered 2026-03-12 11:40:17 +01:00
svemagie
841f2650c6 fix: normalize category/tags arrays in isListed and excludeWhereNotes to prevent .map errors 2026-03-12 11:36:46 +01:00
svemagie
61cd9cdec2 feat: make tags in Recent Posts clickable and link to /categories pages 2026-03-12 11:31:52 +01:00
svemagie
f04c48e3cb fix: hide private and where/Loc notes from public overviews and collections 2026-03-12 11:28:23 +01:00
svemagie
c7d000f4c5 feat: add per-post interactions section before comments
Shows inbound webmentions (likes, reposts, replies, mentions) in card
style between the post and comments section. Hidden when no interactions.
Fetches from both webmentions and conversations APIs with deduplication.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 11:03:57 +01:00
svemagie
15b609d283 fix: consolidate h-card u-url/u-uid onto name link, not avatar link
Having two u-url elements caused duplicate URL warning on indiewebify.me.
Move u-url u-uid to the p-name anchor (canonical identity link) and
make the avatar link decorative only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 10:53:07 +01:00
svemagie
e04b05444d fix: use hidden data element for u-photo in hero h-card
Some microformat parsers can't find u-photo when nested inside an <a> tag.
Move it to a hidden <data> element at the top of the h-card section,
matching the pattern used in h-card.njk.

Also update CLAUDE.md docs for homepage/h-card changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 10:49:47 +01:00
svemagie
612923ed26 feat: add h-card microformat to hero, simplify homepage to builder-only
- hero.njk: add h-card/p-name/u-url/u-photo/p-job-title/p-note markup
- home.njk: remove tier-2 fallback, always use homepage-builder

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 10:45:51 +01:00
svemagie
dce97d8d9b fix: been layout now passes content through instead of placeholder
layouts/been.njk was overriding the page template content with
placeholder text. Now outputs {{ content | safe }} so been.njk
renders correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 08:44:12 +01:00
svemagie
406e49da9b feat: move /where override to base, add /been for past check-ins, remove upstream theme/where.njk 2026-03-11 07:42:40 +01:00
svemagie
a7a1911ef6 feat: move /where override to base, add /been for past check-ins, remove upstream theme/where.njk 2026-03-11 07:42:40 +01:00