Align index.html with yearly-listing terms #3

Merged
svatantrya merged 2 commits from donkey-ai/bal-welist-website:fix/index-yearly-model-consistency into main 2026-07-16 22:32:47 +00:00

View File

@@ -117,7 +117,8 @@ 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:start}
.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}
.panel{
background:var(--panel);border:1px solid var(--line);
border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);
@@ -319,7 +320,7 @@ footer a{color:var(--accent);text-decoration:none}
<div class="row"><span>Contact</span><span id="iv-contact"></span></div>
<div class="row"><span>Server</span><span id="iv-url"></span></div>
<div class="row"><span>Will Executor</span><span><a id="iv-weinfo" href="#" target="_blank"></a></span></div>
<div class="row" id="iv-nextdep-row" style="display:none"><span>Next deposit</span><span id="iv-nextdep"></span></div>
<div class="row" id="iv-nextdep-row" style="display:none"><span>Next renewal</span><span id="iv-nextdep"></span></div>
<div id="qrcode"></div>
<button class="btn-share" id="share-btn">Share invoice</button>
<p class="note">
@@ -331,10 +332,11 @@ footer a{color:var(--accent);text-decoration:none}
<div class="panel">
<h2>How ranking works</h2>
<p class="lead">Bid-based ranking: higher contributions rank higher.</p>
<p class="lead">Ordered by excess donated, then total paid, then base fee (lower first), then WeTime points.</p>
<div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px"><span style="color:var(--muted)">Yearly fee</span><b class="mono"><span id="thr-min">50,000</span> sats</b></div>
<div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px"><span style="color:var(--muted)">Plugin integration</span><b>automatic</b></div>
<div style="display:flex;justify-content:space-between;padding:8px 0;font-size:13px"><span style="color:var(--muted)">Early-adopter guarantee</span><b>12 months</b></div>
<div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px"><span style="color:var(--muted)">Listing period</span><b>365 days</b></div>
<div style="display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px"><span style="color:var(--muted)">Renewal window</span><b>from 6 months before expiry</b></div>
<div style="display:flex;justify-content:space-between;padding:8px 0;font-size:13px"><span style="color:var(--muted)">Plugin integration</span><b>automatic</b></div>
</div>
</div>
@@ -354,8 +356,8 @@ footer a{color:var(--accent);text-decoration:none}
<div class="info-block">
<span class="ic">03</span>
<h3>Early Adopter Incentives</h3>
<p>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. Long-term position is determined by total paid, base fee, and WeTime points (see <a href="/terms.html" target="_blank">Terms</a>).</p>
<h3>Listing &amp; Renewal</h3>
<p>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 <a href="/terms.html" target="_blank">Terms</a> for details.</p>
</div>
<div class="info-block">
@@ -439,8 +441,9 @@ function render() {
const online = allServers.filter(d => d.status === "OK").length;
document.getElementById('s-online').textContent = online;
document.getElementById('s-total').textContent = allServers.length;
const top = getFiltered()[0];
document.getElementById('s-block').textContent = top ? fmt(top.last_block) : '—';
// 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) : '—';
}
async function fetchData() {
@@ -587,7 +590,7 @@ 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 deposit: ' + (result.next_deposit_date || '—');
document.getElementById('iv-status').textContent = 'Server is already listed. Next renewal: ' + (result.next_deposit_date || '—');
const inv = document.getElementById('invoice');
inv.classList.add('show');
inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
@@ -623,7 +626,7 @@ document.getElementById('terms-accept').addEventListener('click', async function
}
};
document.getElementById('iv-status').className = 'ok-line';
document.getElementById('iv-status').textContent = '✓ Server added: ' + serverUrl + '. Pay the invoice to complete.';
document.getElementById('iv-status').textContent = '✓ Server verified: ' + serverUrl + '. Pay the invoice — it will be listed after 3 confirmations.';
const inv = document.getElementById('invoice');
inv.classList.add('show');
inv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });