diff --git a/app.js b/app.js
index 08935f8..ebda20c 100644
--- a/app.js
+++ b/app.js
@@ -455,6 +455,7 @@ function populateDemoShell() {
bell
expires 2026-07-10
+ Resubscribe →
EU
+ Add Agent`;
@@ -591,12 +592,16 @@ function renderAgentTabs() {
const expiredText = hasExpiry
? `expires ${escHtml(expires)}`
: "";
+ const portalLink = hasExpiry
+ ? `Resubscribe →`
+ : "";
return `
`;
@@ -1194,12 +1199,11 @@ async function saveInvoiceEmail() {
async function openBillingPortal() {
const btn = document.getElementById("portal-btn");
- if (!btn) return;
if (!currentEmail) {
toast("No email found. Please sign in again.", "warning");
return;
}
- btnLoad(btn, "");
+ if (btn) btnLoad(btn, "");
try {
const res = await apiFetch(
`${PORTAL_URL}?email=${encodeURIComponent(currentEmail)}`,
@@ -1221,7 +1225,7 @@ async function openBillingPortal() {
} catch (err) {
toast(err.message, "error");
} finally {
- btnReset(btn);
+ if (btn) btnReset(btn);
}
}
diff --git a/styles.css b/styles.css
index 15740be..a793c69 100644
--- a/styles.css
+++ b/styles.css
@@ -721,6 +721,23 @@ body::after {
margin-left: 3px;
}
+.agent-tab-resub {
+ font-size: 10px;
+ font-weight: 600;
+ color: var(--accent);
+ text-decoration: none;
+ margin-left: 4px;
+ padding: 1px 6px;
+ border: 1px solid var(--accent);
+ border-radius: 4px;
+ line-height: normal;
+ transition: background 0.15s;
+}
+
+.agent-tab-resub:hover {
+ background: var(--accent-dim);
+}
+
.agent-tab-badge {
font-size: 10px;
font-weight: 600;