let items = []; let doneIds = new Set(); document.addEventListener('DOMContentLoaded', async () => { const container = document.getElementById('container'); const progress = document.getElementById('progress'); try { const res = await chrome.runtime.sendMessage({ type: 'getReviewTasks' }); if (res.error) { container.innerHTML = `
${escapeHtml(res.error)}
`; return; } items = res.review || []; render(); } catch (e) { container.innerHTML = `
${escapeHtml(e.message)}
`; } function render() { const remaining = items.filter(i => !doneIds.has(i.task.id)); progress.textContent = `${items.length - remaining.length} / ${items.length} reviewed`; if (remaining.length === 0) { container.innerHTML = `

All caught up!

No more decayed tasks to review. Come back next week.

`; chrome.runtime.sendMessage({ type: 'setLastReviewDate', date: new Date().toISOString() }).catch(() => { }); return; } container.innerHTML = ''; for (const item of remaining) { container.appendChild(renderCard(item)); } } function renderCard(item) { const card = document.createElement('div'); card.className = 'card'; card.id = `card-${item.task.id}`; const pillClass = item.score.score >= 70 ? 'score-hot' : item.score.score >= 40 ? 'score-warm' : 'score-cold'; card.innerHTML = `
${escapeHtml(item.task.title)}
${item.score.score} decay
${escapeHtml(item.task.source)} ${item.task.projectName ? `Project: ${escapeHtml(item.task.projectName)}` : ''} ${item.task.labels.length > 0 ? `Labels: ${escapeHtml(item.task.labels.join(', '))}` : ''} Age: ${Math.round(item.score.ageDays)} days
${escapeHtml(item.score.explanation)}
Open
`; card.querySelectorAll('button[data-action]').forEach(btn => { btn.addEventListener('click', async (e) => { const target = e.currentTarget; const action = target.getAttribute('data-action'); const id = target.getAttribute('data-id'); target.textContent = '...'; try { if (action === 'complete') { await chrome.runtime.sendMessage({ type: 'complete', taskId: id }); } else if (action === 'delete') { await chrome.runtime.sendMessage({ type: 'delete', taskId: id }); } else if (action === 'dismiss') { await chrome.runtime.sendMessage({ type: 'dismiss', taskId: id }); } doneIds.add(id); const c = document.getElementById(`card-${id}`); if (c) { c.classList.add('done'); } setTimeout(render, 300); } catch (err) { target.textContent = 'Error'; } }); }); return card; } function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } }); export {};