[object Object]

← back to Dw Pitch Followup

security: add rel=noopener noreferrer to target=_blank links (yoloforever cycle 3)

b5f1281f7b58bbeccca261e539546dbfca5939cb · 2026-09-15 18:50:44 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UxvvaJ7p6VRZ4RzKDaBXqK

Files touched

Diff

commit b5f1281f7b58bbeccca261e539546dbfca5939cb
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Sep 15 18:50:44 2026 -0700

    security: add rel=noopener noreferrer to target=_blank links (yoloforever cycle 3)
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01UxvvaJ7p6VRZ4RzKDaBXqK
---
 public/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/public/index.html b/public/index.html
index e9a0901..e9ed810 100644
--- a/public/index.html
+++ b/public/index.html
@@ -422,7 +422,7 @@ function samplesBlock(r){
     const nm=typeof s==='string'?s:(s.label||s.sku||'sample');
     const w=(withDate&&s&&s.date)?` · ${esc(fmtDay(s.date))}`:'';
     const img=(s&&s.image)?`<img src="${esc(s.image)}" style="width:22px;height:22px;object-fit:cover;border-radius:4px;vertical-align:middle;margin-right:6px;border:1px solid var(--line)">`:`<span class="dot ${cls}"></span>`;
-    const name=(s&&s.url)?`<a href="${esc(s.url)}" target="_blank">${esc(nm)}</a>`:esc(nm);
+    const name=(s&&s.url)?`<a rel="noopener noreferrer" href="${esc(s.url)}" target="_blank">${esc(nm)}</a>`:esc(nm);
     const dead=(s&&s.disco)?`<span class="dtag" title="Discontinued ${esc(s.disco)}">DISCONTINUED · ${esc(fmtDay(s.disco))}</span>`:'';
     return `<li>${img}${name}${w}${dead}</li>`;
   }).join('');

← 5f4bb6e auto-data-snapshot: 2026-08-19T20:02:37 (1 data files) — dat  ·  back to Dw Pitch Followup  ·  auto-data-snapshot: 2026-09-17T20:05:20 (1 data files) — dat 1989be5 →