Refetch when a 304 arrives with nothing stored, and soften a skip reason

Deleting entries during a cleanup left each feed's ETag in place, so the
rescan got 304s, skipped parsing, and 57 feeds stayed empty until a
publisher happened to change something. A 304 while the feed holds zero
entries means the validator has outlived the data, so the daemon drops it
and asks again.

"not a wanted media type" was jargon, and storing it in last_error painted
an ordinary filter decision red. It reads "not audio or video" now, and a
reason is only shown as an error when the state actually is one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
This commit is contained in:
2026-09-10 18:14:57 +00:00
parent dd9c0881ee
commit 5190a29cdb
3 changed files with 47 additions and 4 deletions

View File

@@ -646,7 +646,8 @@ function epEl(e){
${e.flagged?'<span class="dot"></span><span>★ kept</span>':''}
</div>
${enc&&!has?`<div class="dlbar" data-bar="${enc.id}"><i></i></div>`:''}
${enc&&enc.last_error?`<div class="line" style="color:var(--bad)">${esc(enc.last_error)}</div>`:''}
${enc&&enc.last_error&&enc.state==='error'
?`<div class="line" style="color:var(--bad)">${esc(enc.last_error)}</div>`:''}
</div>
<div class="rowacts">
${playable?`<button class="iconbtn" data-a="play" title="Play">▶</button>`:
@@ -780,7 +781,8 @@ function encBox(x){
return `<div class="encbox">
<span class="chip ${esc(x.state)}">${x.state==='skipped'?kindOf(x):esc(x.state)}</span>
<span class="meta" style="flex:1">${esc(kindOf(x))}${size?' \u00b7 '+size:''}</span>
${x.last_error?`<span class="err">${esc(x.last_error)}</span>`:''}
${x.last_error&&x.state==='error'?`<span class="err">${esc(x.last_error)}</span>`
:(x.last_error?`<span class="meta">${esc(x.last_error)}</span>`:'')}
${viewable?`<a class="btn" href="${esc(x.url)}" target="_blank" rel="noopener noreferrer">View</a>`:''}
<button class="btn" data-a="get" data-enc="${x.id}">Download</button>
</div>`;