From e71051d869450ac1b9df7919be27421dd9f9e2c2 Mon Sep 17 00:00:00 2001 From: bitcoinafterlife Date: Fri, 17 Jul 2026 10:10:46 +0000 Subject: [PATCH] Added details of data update times Added details of data update times --- index.html | 69 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 46 insertions(+), 23 deletions(-) diff --git a/index.html b/index.html index 70ed6c3..c54a633 100644 --- a/index.html +++ b/index.html @@ -117,8 +117,7 @@ tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)} .num{font-family:var(--mono);font-variant-numeric:tabular-nums} .score{font-family:var(--display);font-weight:600;font-size:15px} -.add-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;margin:40px 0;align-items:stretch} -.add-grid>.panel{display:flex;flex-direction:column} +.add-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:24px;margin:40px 0;align-items:start} .panel{ background:var(--panel);border:1px solid var(--line); border-radius:var(--radius);padding:24px;box-shadow:var(--shadow); @@ -140,6 +139,12 @@ tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)} .btn:disabled{opacity:.45;cursor:not-allowed;filter:none} .note{font-size:13px;color:var(--muted);margin-top:16px;line-height:1.55} .note strong{color:var(--ink)} +.freshness-note{ + font-size:12px;line-height:1.4;color:var(--muted); + background:var(--accent-soft);border:1px solid var(--line);border-radius:8px; + padding:7px 12px;margin:0 0 12px; +} +.freshness-note strong{color:var(--ink)} .btn-share{ display:block;margin:0 auto 8px;font:inherit;font-size:13px;cursor:pointer; padding:8px 16px;border-radius:8px;border:1px solid var(--line-strong); @@ -259,6 +264,13 @@ footer a{color:var(--accent);text-decoration:none} ↓ JSON + +

+ Fee/description/version refresh about once a day (timing varies). Deposits are credited instantly after 3 confirmations (~30 min). +

+
@@ -287,7 +299,7 @@ footer a{color:var(--accent);text-decoration:none}

Add your Will Executor

-

Enter your server URL. It will appear in the list once your deposit is confirmed (typically about 30 minutes).

+

Enter your server URL. It will be checked online before it appears in the list.

@@ -301,7 +313,7 @@ footer a{color:var(--accent);text-decoration:none}

You are about to add this server:

-

Make sure the link above works correctly before paying. No refunds after payment. URL changes require proof of ownership — see the Terms.

+

Make sure the link above works correctly before paying. No refunds or URL changes after payment.

Contact
Server
Will Executor
- +

@@ -332,11 +344,10 @@ footer a{color:var(--accent);text-decoration:none}

How ranking works

-

Ordered by excess donated, then total paid, then base fee (lower first), then WeTime points.

-
Yearly fee50,000 sats
-
Listing period365 days
-
Renewal windowfrom 6 months before expiry
-
Plugin integrationautomatic
+

Bid-based ranking: higher contributions rank higher.

+
Deposit threshold50,000 sats
+
Plugin integrationautomatic
+
Early-adopter guarantee12 months
@@ -351,13 +362,13 @@ footer a{color:var(--accent);text-decoration:none}
02

Ranking System

-

This leaderboard is ordered by excess donated (over the yearly fee), then total amount paid, then lower base fee, then WeTime points.

+

This leaderboard operates on a bid-based ranking system where higher contributions result in better positioning.

03 -

Listing & Renewal

-

A flat yearly fee buys 365 days of presence in the list, starting when your payment reaches 3 confirmations. You can renew for one additional year at any time from 6 months before expiry; listings that are not renewed are removed at expiry. See the Terms for details.

+

Early Adopter Incentives

+

To support the project's initial launch phase, we plan to maintain the first Will Executor servers for a minimum of 12 months, rewarding early participants. Subsequently, premium positions will be available through an auction system based on protocol revenue generation.

@@ -374,7 +385,6 @@ footer a{color:var(--accent);text-decoration:none}
Bitcoin After Life — Will Executor List welist@bitcoin-after.life - Terms COMMIT_HASH_PLACEHOLDER
@@ -387,6 +397,18 @@ let minAmount = 50000; const fmt = n => (n != null ? Number(n).toLocaleString('en-US') : '—'); const trunc = (s, m=40) => s && s.length > m ? s.slice(0, m) + '…' : s; +const statusMap = { + 'OK': 'Health check passed', + 'TIMEOUT': 'Connection timeout', + 'CONNECTION': 'Connection error', + 'STATUS': 'HTTP error', + 'WRONG REPLY': 'Invalid JSON response', + 'REQUEST': 'Request error', + 'BODY': 'Body read error', + 'DECODE': 'Decode error', + 'KO': 'Generic error' +}; + function getChain() { const btn = document.querySelector('#chainSeg [aria-pressed="true"]'); return btn ? btn.dataset.c : 'bitcoin'; @@ -394,7 +416,9 @@ function getChain() { function getFiltered() { return allServers - .filter(d => (d.url + " " + (d.info||"")).toLowerCase().includes(q.toLowerCase())); + .filter(d => withTor ? true : !d.onion) + .filter(d => (d.url + " " + (d.info||"")).toLowerCase().includes(q.toLowerCase())) + .sort((a, b) => (b.last_block||0) - (a.last_block||0) || (b.points||0) - (a.points||0) || (b.count_win||0) - (a.count_win||0) || (a.base_fee||0) - (b.base_fee||0) || (b.version||'').localeCompare(a.version||'')); } function render() { @@ -438,12 +462,11 @@ function render() {
`); }); - const online = allServers.filter(d => d.status === "OK").length; + const online = allServers.filter(d => d.status === "online" || d.status === "OK").length; document.getElementById('s-online').textContent = online; document.getElementById('s-total').textContent = allServers.length; - // Highest known block across all servers (the list is ranked by fee/points, not by height) - const maxBlock = allServers.reduce((m, d) => Math.max(m, d.last_block || 0), 0); - document.getElementById('s-block').textContent = maxBlock ? fmt(maxBlock) : '—'; + const top = getFiltered()[0]; + document.getElementById('s-block').textContent = top ? fmt(top.last_block) : '—'; } async function fetchData() { @@ -569,7 +592,7 @@ document.getElementById('terms-accept').addEventListener('click', async function const balStr = result.balance != null ? fmt(result.balance) : null; const uncStr = result.unconfirmed_balance != null ? fmt(result.unconfirmed_balance) : null; document.getElementById('iv-balance').textContent = balStr ? (uncStr ? balStr + ' (' + uncStr + ')' : balStr) : '—'; - document.getElementById('iv-donations').textContent = result.donation != null ? fmt(result.donation) : '—'; + document.getElementById('iv-donations').textContent = result.donations != null ? fmt(result.donations) : '—'; document.getElementById('iv-contact').textContent = document.getElementById('contact').value.trim() || '—'; const weLink = result.id ? `/weinfo/${result.chain || chain}/${result.id}` : null; const weinfoEl = document.getElementById('iv-weinfo'); @@ -590,13 +613,13 @@ document.getElementById('terms-accept').addEventListener('click', async function document.getElementById('iv-nextdep').textContent = result.next_deposit_date || '—'; document.getElementById('iv-nextdep-row').style.display = 'flex'; document.getElementById('iv-status').className = 'ok-line'; - document.getElementById('iv-status').textContent = 'Server is already listed. Next renewal: ' + (result.next_deposit_date || '—'); + document.getElementById('iv-status').textContent = 'Server is already listed. Next deposit: ' + (result.next_deposit_date || '—'); const inv = document.getElementById('invoice'); inv.classList.add('show'); inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); return; } - const amountSats = result.min_amount != null ? result.min_amount : minAmount; + const amountSats = result.amount != null ? result.amount : minAmount; const amountBtc = (amountSats / 1e8).toFixed(8).replace(/\.?0+$/, ''); const invoiceuri = `bitcoin:${result.address}?amount=${amountBtc}&label=BAL&message=Order+For+url+%26+${encodeURIComponent(url)}`; const qrEl = document.getElementById('qrcode'); @@ -626,7 +649,7 @@ document.getElementById('terms-accept').addEventListener('click', async function } }; document.getElementById('iv-status').className = 'ok-line'; - document.getElementById('iv-status').textContent = '✓ Server verified: ' + serverUrl + '. Pay the invoice — it will be listed after 3 confirmations.'; + document.getElementById('iv-status').textContent = '✓ Server added: ' + serverUrl + '. Pay the invoice to complete.'; const inv = document.getElementById('invoice'); inv.classList.add('show'); inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });