<%~ 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 = it.planLabels[plan] || plan; const limits = { free: { monitors: 10, interval: '30s', regions: 1 }, pro: { monitors: 200, interval: '5s', regions: 'All' }, pro2x: { monitors: 400, interval: '5s', regions: 'All' }, pro4x: { monitors: 800, interval: '5s', regions: 'All' }, lifetime: { monitors: 200, interval: '5s', regions: 'All' }, lifetime2x: { monitors: 400, interval: '5s', regions: 'All' }, lifetime4x: { monitors: 800, interval: '5s', 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.startsWith('lifetime')) { %> <%= planLabel %> <% } %>
<%= 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) { %>
<%= planLabel %> expires <%= new Date(it.account.plan_expires_at).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }) %>. Extend or upgrade <% const stack = typeof it.account.plan_stack === 'string' ? JSON.parse(it.account.plan_stack) : (it.account.plan_stack || []); if (stack.length > 0) { const parts = stack.map(function(s) { const name = it.planLabels[s.plan] || s.plan; return s.remaining_days == null ? name : name + ' (' + s.remaining_days + 'd)'; }); %>
Then: <%= parts.join(' → ') %>
<% } %>
<% } else if (plan.startsWith('lifetime') && plan !== 'lifetime4x') { %> <% } %>

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, so 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 planLabel = inv.plan.startsWith('lifetime') ? (it.planLabels[inv.plan] || 'Lifetime') : `${it.planLabels[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') %>