[object Object]

← back to Thesetdecorator

TSD a11y + SEO: alt text on 3 dynamic imgs + meta description on decorator profile

0220d7a9edfdd9cb1a75cb4c7487f942bc5c2496 · 2026-06-03 07:48:39 -0700 · SteveStudio2

- alt on the 3 real JS-injected imgs (logo-agent room-setting + top-variant
  preview, best-seller room-photo preview); catalog 'missing alt' was a JS
  comment (cards use CSS bg-image + aria-label, no real <img>) → no change
- <meta name=description> on decorator.html; SKIPPED art-review.html (admin
  Vision-AI surface, unlinked/non-public — don't SEO an internal page)

yolo-loop tick 2 · DTD verdict A (Claude+Codex 2/2) · local only, no deploy.

Files touched

Diff

commit 0220d7a9edfdd9cb1a75cb4c7487f942bc5c2496
Author: SteveStudio2 <steve@designerwallcoverings.com>
Date:   Wed Jun 3 07:48:39 2026 -0700

    TSD a11y + SEO: alt text on 3 dynamic imgs + meta description on decorator profile
    
    - alt on the 3 real JS-injected imgs (logo-agent room-setting + top-variant
      preview, best-seller room-photo preview); catalog 'missing alt' was a JS
      comment (cards use CSS bg-image + aria-label, no real <img>) → no change
    - <meta name=description> on decorator.html; SKIPPED art-review.html (admin
      Vision-AI surface, unlinked/non-public — don't SEO an internal page)
    
    yolo-loop tick 2 · DTD verdict A (Claude+Codex 2/2) · local only, no deploy.
---
 YOLO_BACKLOG.md                     | 16 ++++++++++------
 public/_best-seller-detail.tpl.html |  2 +-
 public/decorator.html               |  1 +
 public/logo-agent.html              |  4 ++--
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/YOLO_BACKLOG.md b/YOLO_BACKLOG.md
index ab8d906..6478f32 100644
--- a/YOLO_BACKLOG.md
+++ b/YOLO_BACKLOG.md
@@ -19,13 +19,17 @@ reversible local commit** marked `[x]` w/ hash, then ScheduleWakeup ~1800s.
   pages & 2 templates; idempotent `scripts/og-image-backfill.js`; 0 SVG social images
   left. DTD verdict B (Claude+Codex 2/2).
 
+## Done (cont.)
+- [x] **a11y · alt text** — 2026-06-03 · `d874bbc` · added descriptive alt to the 3 real
+  JS-injected imgs (logo-agent room-setting + top-variant, _best-seller-detail room
+  preview). catalog.html's "missing-alt" hit was a JS COMMENT — cards use CSS
+  background-image + existing `aria-label`, no real `<img>` → no change needed.
+- [x] **SEO · meta description** — 2026-06-03 · `d874bbc` · added `<meta name=description>`
+  to decorator.html. art-review.html SKIPPED: it's an admin Vision-AI/bulk-attest surface
+  (not linked from any page, not public) → don't SEO an internal page. DTD verdict A.
+
 ## Open (prioritized)
-- [ ] **a11y · alt text** — `<img>` missing `alt` on logo-agent.html (×2), catalog.html
-  (×1), _best-seller-detail.tpl.html (×1). Add descriptive alt (decorative → `alt=""`).
-- [ ] **SEO · meta description** — pages with no `<meta name=description>`: art-review.html,
-  decorator.html. Add a concise, accurate description (decorator.html is a real profile
-  surface; art-review is admin-ish — confirm it's public before bothering).
-- [ ] **next-tick audit** — when the above are done, audit a fresh dimension (broken
+- [ ] **next-tick audit** — when resumed, audit a fresh dimension (broken
   internal links, empty-state copy, focus styles, `loading="lazy"` on grid imgs,
   duplicate H1s) and append concrete items here before implementing.
 
diff --git a/public/_best-seller-detail.tpl.html b/public/_best-seller-detail.tpl.html
index e31d7c9..d0dba15 100644
--- a/public/_best-seller-detail.tpl.html
+++ b/public/_best-seller-detail.tpl.html
@@ -171,7 +171,7 @@
           <p class="bd-hint" style="margin:0 0 10px">Upload a photo of the set you're dressing and we'll render this wallcovering onto its walls — for storyboarding and approval review.</p>
           <input type="file" id="bd-room-file" accept="image/*" style="font:13px var(--font-ui); color:var(--fg); margin-bottom:8px">
           <div id="bd-room-preview" style="display:none; margin:8px 0">
-            <img id="bd-room-preview-img" style="max-width:100%; max-height:300px; border:1px solid var(--rule); border-radius:6px">
+            <img id="bd-room-preview-img" alt="Uploaded room photo preview for this design" style="max-width:100%; max-height:300px; border:1px solid var(--rule); border-radius:6px">
             <div class="bd-hint" id="bd-room-meta" style="margin-top:4px"></div>
           </div>
           <div class="bd-cta">
diff --git a/public/decorator.html b/public/decorator.html
index deb939e..c6d05f8 100644
--- a/public/decorator.html
+++ b/public/decorator.html
@@ -4,6 +4,7 @@
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
   <title>Set Decorator Profile — The Set Decorator</title>
+  <meta name="description" content="Set decorator profile on The Set Decorator — film & TV credits, awards, SDSA membership, and contact details for production designers and studios.">
   <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@400;500;600&display=swap">
   <link rel="stylesheet" href="/css/main.css">
   <meta property="og:type" content="website">
diff --git a/public/logo-agent.html b/public/logo-agent.html
index a55c90e..3285e2d 100644
--- a/public/logo-agent.html
+++ b/public/logo-agent.html
@@ -332,7 +332,7 @@
 
     async function renderRoomSetting() {
       $('#room-setting').style.display = '';
-      $('#room-svg-wrap').innerHTML = `<img src="/api/logo-agent/room-setting/${session.session_id}?_=${Date.now()}" style="width:100%;display:block">`;
+      $('#room-svg-wrap').innerHTML = `<img src="/api/logo-agent/room-setting/${session.session_id}?_=${Date.now()}" alt="Generated room setting featuring the selected logo" style="width:100%;display:block">`;
     }
 
     // ── Set & Go autopilot ────────────────────────────────────────────────
@@ -358,7 +358,7 @@
         $('#iter-score').textContent = d.top.score.total;
         $('#score-bar').style.width = (d.top.score.total * 100) + '%';
         $('#plateau').textContent = d.plateau;
-        $('#live-svg-wrap').innerHTML = `<img src="${variantSvgUrl(d.top)}" style="width:100%;border-radius:10px">`;
+        $('#live-svg-wrap').innerHTML = `<img src="${variantSvgUrl(d.top)}" alt="Top-ranked logo variant from this iteration" style="width:100%;border-radius:10px">`;
       });
       es.addEventListener('locked', async e => {
         const d = JSON.parse(e.data);

← 226ae28 TSD yolo-loop backlog: envelope + tick-1 done + open items  ·  back to Thesetdecorator  ·  backlog: correct tick-2 commit hash (post-amend 0220d7a) 5fdf022 →