[object Object]

← back to Linkedin Like Helper

Feed-pages: visible per-stream checklist (label + opened pill + re-open), matching Post-links UX

e35fcb1125947e10a5b325a872183794ae70f967 · 2026-07-01 10:44:12 -0700 · Steve Abrams

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

Files touched

Diff

commit e35fcb1125947e10a5b325a872183794ae70f967
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Wed Jul 1 10:44:12 2026 -0700

    Feed-pages: visible per-stream checklist (label + opened pill + re-open), matching Post-links UX
    
    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---
 index.html | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index d4139ad..b608489 100644
--- a/index.html
+++ b/index.html
@@ -95,7 +95,7 @@
       </div>
 
       <label style="margin-top:14px">Add your own — hashtags (<code>#raffia</code>) or full URLs, one per line</label>
-      <textarea id="customFeeds" placeholder="#grasscloth&#10;#luxuryinteriors&#10;https://www.linkedin.com/in/some-connection/recent-activity/all/" oninput="persistFeeds()"></textarea>
+      <textarea id="customFeeds" placeholder="#grasscloth&#10;#luxuryinteriors&#10;https://www.linkedin.com/in/some-connection/recent-activity/all/" oninput="persistFeeds();renderFeedStats()"></textarea>
     </div>
 
     <div class="card">
@@ -129,6 +129,7 @@
         <span>Left: <b id="fLeft">0</b></span>
       </div>
       <div class="bar"><i id="fBar"></i></div>
+      <ul class="list" id="fList"></ul>
 
       <div class="note">
         <b>First time:</b> Chrome asks to <i>“allow multiple pop-ups”</i> — click Allow once.
@@ -278,6 +279,14 @@ function selectAll(on){
   document.querySelectorAll('#sources input[type=checkbox]').forEach(c=>c.checked=on);
   persistFeeds(); renderFeedStats();
 }
+function feedLabel(url){
+  const p = PRESETS.find(p=>p.url===url);
+  if(p) return p.label;
+  const m = url.match(/[?&]keywords=([^&]+)/);
+  if(m) return '#'+decodeURIComponent(m[1]);
+  return url;
+}
+function reopenFeed(url){ openTabs([url]); fOpened.add(url); saveFeedOpened(); renderFeedStats(); }
 function renderFeedStats(){
   const sel = selectedFeeds();
   const opened = sel.filter(u=>fOpened.has(u)).length;
@@ -285,6 +294,17 @@ function renderFeedStats(){
   document.getElementById('fDone').textContent  = opened;
   document.getElementById('fLeft').textContent  = sel.length-opened;
   document.getElementById('fBar').style.width = sel.length? (opened/sel.length*100)+'%' : '0';
+  const ul=document.getElementById('fList'); ul.innerHTML='';
+  sel.forEach((u,i)=>{
+    const done=fOpened.has(u);
+    const li=document.createElement('li'); if(done) li.className='done';
+    li.innerHTML='<span class="num">'+(i+1)+'</span>'+
+      '<span class="url"><a href="'+u+'" target="_blank" rel="noopener">'+feedLabel(u)+'</a></span>'+
+      (done?'<span class="pill">opened</span>':'')+
+      '<button class="mini" data-u="'+encodeURIComponent(u)+'">re-open</button>';
+    ul.appendChild(li);
+  });
+  ul.querySelectorAll('.mini').forEach(b=>b.onclick=()=>reopenFeed(decodeURIComponent(b.dataset.u)));
 }
 function openNextFeeds(){
   const sel = selectedFeeds();

← bfbe282 a11y: mode tabs are real buttons (keyboard focus + role=tab/  ·  back to Linkedin Like Helper  ·  chore: lint + refactor (feedLabel param shadow fix; tab a11y 1b0e80d →