See the best posts from any Bluesky account
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add alt text to profile header avatar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+3 -3
+2 -2
SEO-TODO.md
··· 8 8 9 9 ## P1 — High 10 10 11 - 4. **Profile avatars use `alt=""`** (`resources/views/pages/profile/show.edge:22`) — use `alt="@{handle} avatar"` for SEO/a11y. 11 + 4. ~~**Profile avatars use `alt=""`**~~ — **DONE.** Profile header avatar now uses `alt="@handle avatar"`. Search-ahead avatar left empty (decorative; handle rendered alongside). 12 12 5. **Weak heading hierarchy** — display name is a styled `<div>` (`profile/show.edge:28`), no `<h1>`. Replace with semantic heading. 13 13 6. **No JSON-LD structured data** — add `Person` schema on profile pages, `ItemList` for post lists, to unlock rich results in Google SERPs. 14 14 ··· 34 34 35 35 1. ~~robots.txt~~ (~5 min) — **done** 36 36 2. ~~Meta descriptions~~ (~10 min) — **done** 37 - 3. Avatar alt text (~5 min) 37 + 3. ~~Avatar alt text~~ (~5 min) — **done** 38 38 4. JSON-LD Person + ItemList (~30 min) 39 39 5. Heading hierarchy fix (~10 min) 40 40 6. ~~Dynamic sitemap.xml~~ (~20 min) — **done**
+1 -1
resources/views/pages/profile/show.edge
··· 19 19 <div class="flex items-center justify-between mb-6"> 20 20 <a href="https://bsky.app/profile/{{ handle }}" target="_blank" rel="noopener" class="group flex items-center gap-4 no-underline"> 21 21 @if(avatarUrl) 22 - <img src="{{ avatarUrl }}" alt="" class="size-14 rounded-full shrink-0 object-cover"> 22 + <img src="{{ avatarUrl }}" alt="{{ '@' + handle }} avatar" class="size-14 rounded-full shrink-0 object-cover"> 23 23 @else 24 24 <div class="size-14 rounded-full bg-gray-300 dark:bg-gray-700 shrink-0 flex items-center justify-center text-xl text-gray-400">@</div> 25 25 @endif