← back to Secrets Manager
update tracker: add 'to configure' section for 16 not-set keys (mint links + route-back templates)
f461d5cf00b1cda1b4d8fb97f953b3810d7cb435 · 2026-06-01 14:44:39 -0700 · Steve Abrams
Files touched
M update-viewer/index.htmlM update-viewer/update-items.json
Diff
commit f461d5cf00b1cda1b4d8fb97f953b3810d7cb435
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 1 14:44:39 2026 -0700
update tracker: add 'to configure' section for 16 not-set keys (mint links + route-back templates)
---
update-viewer/index.html | 20 ++++++++++++++++++++
update-viewer/update-items.json | 17 +++++++++++++++++
2 files changed, 37 insertions(+)
diff --git a/update-viewer/index.html b/update-viewer/index.html
index 7c59bf2..6ae214f 100644
--- a/update-viewer/index.html
+++ b/update-viewer/index.html
@@ -80,6 +80,26 @@ async function load(){
((it.claudeCanRun&&it.claudeCanRun.length)?'<div class="runnable">⚡ Claude can run: '+it.claudeCanRun.join(', ')+'</div>':'');
w.appendChild(div);
}
+ // ── To configure (not-set keys) ──
+ const tc = d.toConfigure || [];
+ if (tc.length) {
+ const h = document.createElement('div');
+ h.className = 'row-label';
+ h.style.cssText = 'margin:18px 4px 2px;font-size:13px;color:#cbb';
+ h.textContent = 'To configure — ' + tc.length + ' keys not set';
+ w.appendChild(h);
+ for (const k of tc) {
+ const c = document.createElement('div');
+ c.className = 'card prep';
+ c.style.padding = '13px 18px';
+ c.innerHTML =
+ '<div class="top"><span class="sev prep">not set</span><span class="title" style="font-size:15px">' + esc(k.name) + '</span></div>' +
+ '<div class="exposed">' + esc(k.desc) + '</div>' +
+ (k.mintUrl ? '<a class="mint" target="_blank" rel="noopener" href="' + esc(k.mintUrl) + '">↗ get key</a>' : '') +
+ cmdBox('route', "printf '" + k.name + "=<VALUE>' | node ~/Projects/secrets-manager/cli.js import-paste");
+ w.appendChild(c);
+ }
+ }
w.querySelectorAll('.togg').forEach(b=>b.onclick=async()=>{
const ns=b.dataset.st==='done'?'outstanding':'done';
await fetch('/api/toggle',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({id:b.dataset.id,status:ns})});
diff --git a/update-viewer/update-items.json b/update-viewer/update-items.json
index 8755dc8..cc8a27f 100644
--- a/update-viewer/update-items.json
+++ b/update-viewer/update-items.json
@@ -96,5 +96,22 @@
"verify": "verified env-first",
"claudeCanRun": []
}
+ ],
+ "toConfigure": [
+ { "name": "ANTHROPIC_API_KEY", "desc": "Anthropic API Key", "mintUrl": "https://console.anthropic.com/settings/keys" },
+ { "name": "GEMINI_API_KEY_RALPH", "desc": "Gemini key — Letsbegin Ralph runner (rotation #2 target)", "mintUrl": "https://aistudio.google.com/apikey" },
+ { "name": "RESEND_API_KEY", "desc": "Resend transactional email — wallco.ai magic-link sign-in", "mintUrl": "https://resend.com/api-keys" },
+ { "name": "MAIL_FROM", "desc": "From identity for transactional email (must match verified Resend domain)", "mintUrl": null },
+ { "name": "VERCEL_TOKEN", "desc": "Vercel API Token", "mintUrl": "https://vercel.com/account/tokens" },
+ { "name": "HEYGEN_API_KEY", "desc": "HeyGen talking-head avatar render (session-debrief skill)", "mintUrl": "https://app.heygen.com/settings" },
+ { "name": "STRIPE_WEBHOOK_SECRET", "desc": "Stripe Webhook Signing Secret", "mintUrl": "https://dashboard.stripe.com/webhooks" },
+ { "name": "STRIPE_RESTRICTED_KEY", "desc": "Stripe Restricted Key (site-factory)", "mintUrl": "https://dashboard.stripe.com/apikeys" },
+ { "name": "SHOPIFY_API_KEY", "desc": "Shopify API Key", "mintUrl": "https://admin.shopify.com" },
+ { "name": "GOOGLE_PLACES_API_KEY", "desc": "Google Places API Key", "mintUrl": "https://console.cloud.google.com/apis/credentials" },
+ { "name": "NEXT_PUBLIC_GOOGLE_MAPS_API_KEY", "desc": "Google Maps JS Key (browser-exposed; set HTTP-referrer restrictions)", "mintUrl": "https://console.cloud.google.com/apis/credentials" },
+ { "name": "NPH_GOOGLE_OAUTH_CLIENT_ID", "desc": "Google OAuth Client ID — buyer sign-in on National Paper Hangers", "mintUrl": "https://console.cloud.google.com/apis/credentials" },
+ { "name": "NPH_GOOGLE_OAUTH_CLIENT_SECRET", "desc": "Google OAuth Client Secret — National Paper Hangers", "mintUrl": "https://console.cloud.google.com/apis/credentials" },
+ { "name": "GEORGE_AUTH", "desc": "George Gmail Basic Auth (DW microsite leads)", "mintUrl": null },
+ { "name": "GOOGLE_GENERATIVE_AI_API_KEY", "desc": "alias of GEMINI_API_KEY (set if a lib expects this name)", "mintUrl": null }
]
}
← c35aa92 credentials/tokens update tracker web viewer (:9778) + dw_ad
·
back to Secrets Manager
·
secrets viewer: add read-only /rotation page (renders ROTATI 4e224ba →