<%~ include('./partials/head', { title: 'Settings' }) %> <%~ include('./partials/nav', { nav: 'settings' }) %> <% const hasEmail = !!it.account.email_hash; const createdDate = new Date(it.account.created_at).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); const plan = it.account.plan || 'free'; const planLabel = { free: 'Free', pro: 'Pro', pro2x: 'Pro 2x', pro4x: 'Pro 4x', lifetime: 'Lifetime' }[plan] || plan; const limits = { free: { monitors: 10, interval: '30s', regions: 1 }, pro: { monitors: 200, interval: '10s', regions: 'All' }, pro2x: { monitors: 400, interval: '5s', regions: 'All' }, pro4x: { monitors: 800, interval: '2s', regions: 'All' }, lifetime: { monitors: 200, interval: '10s', regions: 'All' }, }[plan] || { monitors: 10, interval: '30s', regions: 1 }; %>

Settings

Plan

<% if (plan === 'free') { %> Free <% } else if (plan === 'pro' || plan === 'pro2x' || plan === 'pro4x') { %> <%= planLabel %> <% } else if (plan === 'lifetime') { %> Lifetime <% } %>
<%= it.monitorCount %>/<%= limits.monitors %>
Monitors
<%= limits.interval %>
Min Interval
<%= limits.regions %>
Regions / Monitor
<% if (plan === 'free') { %> <% } else if ((plan === 'pro' || plan === 'pro2x' || plan === 'pro4x') && it.account.plan_expires_at) { %>
Pro plan expires <%= new Date(it.account.plan_expires_at).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) %>. Extend or upgrade to Lifetime
<% } %>

Account

<% if (!it.isSubKey) { %>
<%= it.loginKey %>
<% } %>

<%= createdDate %>

<% if (it.isSubKey) { %>

Signed in with a sub-key

Sub-keys can manage monitors but can't access account credentials. Sign in with your main account key to manage your login key, recovery email, and sub-keys.

<% } %> <% if (!it.isSubKey) { %>

Recovery Email

Used for account recovery only. Stored as a one-way hash — we can't read it.

<% if (hasEmail) { %> <% } %>
<% } %> <% if (!it.isSubKey) { %>

Sub-Keys

Create separate keys for different apps, scripts, or teammates.

<% if (it.apiKeys.length === 0) { %>

No sub-keys yet.

<% } else { %> <% it.apiKeys.forEach(function(k) { %>

<%= k.label %>

<%= k.key %>

created <%= new Date(k.created_at).toLocaleDateString() %> <%~ k.last_used_at ? '· last used ' + it.timeAgoSSR(k.last_used_at) : '· never used' %>

<% }) %> <% } %>
<% } %> <% if (it.invoices && it.invoices.length > 0) { %>

Invoices

<% it.invoices.forEach(function(inv) { const statusColors = { paid: 'green', confirming: 'blue', pending: 'yellow', underpaid: 'orange' }; const statusColor = statusColors[inv.status] || 'gray'; const date = new Date(inv.created_at).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); const invPlanNames = { pro: 'Pro', pro2x: 'Pro 2x', pro4x: 'Pro 4x', lifetime: 'Lifetime' }; const planLabel = inv.plan === 'lifetime' ? 'Lifetime' : `${invPlanNames[inv.plan] || 'Pro'} × ${inv.months}mo`; %>
<%= planLabel %> $<%= Number(inv.amount_usd).toFixed(2) %> · <%= inv.coin.toUpperCase() %>
<%= date %> <% if (inv.status === 'pending' || inv.status === 'underpaid' || inv.status === 'confirming') { %> View <% } else if (inv.status === 'paid') { %> Paid Receipt <% } %>
<% }) %>
<% } %>
<%~ include('./partials/foot') %>