diff --git a/site/block.html b/site/block.html
index 50c4cf94e..289b8f06e 100644
--- a/site/block.html
+++ b/site/block.html
@@ -357,7 +357,7 @@ async function load() {
const chips = [b.chain ? (b.chain_now === false ? 'chain block, replaced' : 'chain block') : `${esc(b.color)}`, `class ${esc(b.class ? b.class.class : 'v4')}`];
if (j.checkpoint) chips.push(`checkpoint ${j.checkpoint.index}, ${esc(j.checkpoint.state)}`);
chips.push(b.lock && b.lock.final ? `final under lock ${int(b.lock.index)}` : `not under a lock yet`);
- if (b.chain) chips.push(sum.total ? `${sum.paid} of ${sum.total} shards paid` : 'no shard plan yet');
+ if (b.chain) chips.push(sum.total ? `${sum.paid} of ${sum.total} shards paid` : 'plan not read yet');
if (b.proof_records) chips.push(`carries ${b.proof_records} proof record${b.proof_records === 1 ? '' : 's'}`);
if (j.txs.length) chips.push(`${j.txs.length} transaction${j.txs.length === 1 ? '' : 's'} executed`);
$('chips').innerHTML = chips.join('');
diff --git a/site/explorer.html b/site/explorer.html
index 9f3343d59..854b000b5 100644
--- a/site/explorer.html
+++ b/site/explorer.html
@@ -477,7 +477,7 @@ function drawDag() {
lanes.forEach((m, i) => ctx.fillText(m, 4, padY + i * lh + lh / 2 - 7));
}
function nearest(ev) { const cv = $('dag'), r = cv.getBoundingClientRect(), x = ev.clientX - r.left, y = ev.clientY - r.top; let best = null, bd = 144; for (const p of dagPos.values()) { const d = (p.x - x) ** 2 + (p.y - y) ** 2; if (d < bd) { bd = d; best = p; } } return best; }
-$('dag').addEventListener('mousemove', ev => { const p = nearest(ev); if (!p) { dagTip.style.display = 'none'; return; } const b = p.b, s = b.shards; dagTip.style.display = 'block'; dagTip.style.left = Math.min(p.x + 12, $('dag').clientWidth - 310) + 'px'; dagTip.style.top = (p.y + 12) + 'px'; dagTip.innerHTML = `${esc(shortHash(b.hash, 10, 6))}
${b.chain ? (b.chain_now === false ? 'replaced chain block ' + int(b.number) : 'chain block ' + int(b.number)) : esc(b.color)}, blue score ${int(b.blue_score)}, DAA ${int(b.daa)}
miner ${esc(b.miner_id || '?')}, class ${esc(b.class || 'v4')}, ${b.parents} parent${b.parents === 1 ? '' : 's'}
${s && s.total ? `${s.paid} of ${s.total} shards paid` : (b.chain ? 'no shard plan yet' : 'no shards (not a chain block)')}${b.final ? ', under a lock' : ''}`; });
+$('dag').addEventListener('mousemove', ev => { const p = nearest(ev); if (!p) { dagTip.style.display = 'none'; return; } const b = p.b, s = b.shards; dagTip.style.display = 'block'; dagTip.style.left = Math.min(p.x + 12, $('dag').clientWidth - 310) + 'px'; dagTip.style.top = (p.y + 12) + 'px'; dagTip.innerHTML = `${esc(shortHash(b.hash, 10, 6))}
${b.chain ? (b.chain_now === false ? 'replaced chain block ' + int(b.number) : 'chain block ' + int(b.number)) : esc(b.color)}, blue score ${int(b.blue_score)}, DAA ${int(b.daa)}
miner ${esc(b.miner_id || '?')}, class ${esc(b.class || 'v4')}, ${b.parents} parent${b.parents === 1 ? '' : 's'}
${s && s.total ? `${s.paid} of ${s.total} shards paid` : (b.chain ? 'plan not read yet' : 'no shards (not a chain block)')}${b.final ? ', under a lock' : ''}`; });
$('dag').addEventListener('mouseleave', () => { dagTip.style.display = 'none'; });
$('dag').addEventListener('click', ev => { const p = nearest(ev); if (p) location.href = '/block/' + p.b.hash; });
async function loadDag() { const j = await fetch('/api/explorer?dag=150').then(r => r.json()); if (!j.ok) throw new Error(j.error); dagBlocks = j.blocks; $('dag-eyebrow').textContent = `the newest ${j.blocks.length} blocks, one lane per miner, read ${stamp(j.now)}`; drawDag(); }
diff --git a/site/tx.html b/site/tx.html
index 47e97d42f..956a77e59 100644
--- a/site/tx.html
+++ b/site/tx.html
@@ -370,7 +370,7 @@ async function load() {
['Blue score', int(b.blue_score)], ['DAA score', int(b.daa)], ['Class', esc(b.class || 'v4')],
['Miner', addr(b.evm_miner)],
['Lock state', b.lock ? `${b.lock.final ? 'final' : 'not final'} ${esc(b.lock.reason)}` : 'n/a'],
- ['Proof', b.shards && b.shards.total ? `${b.shards.paid} of ${b.shards.total} shards paid${b.shards.median_lag !== null ? `, median lag ${int(b.shards.median_lag)} DAA` : ''} ${b.shards.proving} proving, ${b.shards.verified} verified, ${b.shards.planned} planned` : 'no shard plan yet'],
+ ['Proof', b.shards && b.shards.total ? `${b.shards.paid} of ${b.shards.total} shards paid${b.shards.median_lag !== null ? `, median lag ${int(b.shards.median_lag)} DAA` : ''} ${b.shards.proving} proving, ${b.shards.verified} verified, ${b.shards.planned} planned` : 'plan not read yet'],
]);
} else { $('blk-eyebrow').textContent = 'outside the observer window'; $('blk').innerHTML = dl([['Block', `${esc(t.block_hash)}`], ['Note', esc(b && b.note ? b.note : 'the observer keeps one day of blocks')]]); }
const logs = t.logs || [];