← back to Wallco Ai
rename Cactus Curator → Design Curator: /admin/design-curator route + file, old path 301-redirects (query preserved), nav + title + sister-page links updated (internal /api/cactus-* names unchanged)
9f06acea13544442dd2784c7a065b38f529df5c8 · 2026-06-01 07:01:28 -0700 · Steve Abrams
Files touched
R099 public/admin/cactus-curator.html public/admin/design-curator.htmlM public/admin/drunk-curator.htmlM public/admin/workspace.htmlM server.js
Diff
commit 9f06acea13544442dd2784c7a065b38f529df5c8
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Jun 1 07:01:28 2026 -0700
rename Cactus Curator → Design Curator: /admin/design-curator route + file, old path 301-redirects (query preserved), nav + title + sister-page links updated (internal /api/cactus-* names unchanged)
---
public/admin/{cactus-curator.html => design-curator.html} | 4 ++--
public/admin/drunk-curator.html | 2 +-
public/admin/workspace.html | 2 +-
server.js | 13 ++++++++++---
4 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/public/admin/cactus-curator.html b/public/admin/design-curator.html
similarity index 99%
rename from public/admin/cactus-curator.html
rename to public/admin/design-curator.html
index 5267369..6955bc5 100644
--- a/public/admin/cactus-curator.html
+++ b/public/admin/design-curator.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
-<title>Cactus Curator — wallco.ai admin</title>
+<title>Design Curator — wallco.ai admin</title>
<style>
:root { --cols: 5; --bg:#0e0f10; --panel:#17191b; --line:#272b2e; --ink:#e9ecef; --mut:#9aa3ab; --accent:#7bc96f; }
* { box-sizing: border-box; }
@@ -194,7 +194,7 @@
<body>
<header>
<div class="row">
- <h1><span class="leaf">❖</span> Cactus Curator</h1>
+ <h1><span class="leaf">❖</span> Design Curator</h1>
<span class="pill" id="stat">loading…</span>
<label class="ctl">Collection
<select id="collection" title="switch the curated line — navigates to ?category=<line>"></select>
diff --git a/public/admin/drunk-curator.html b/public/admin/drunk-curator.html
index c7033b5..b3097c2 100644
--- a/public/admin/drunk-curator.html
+++ b/public/admin/drunk-curator.html
@@ -726,7 +726,7 @@ _autoTog.addEventListener('change',()=>{
if(autoIdOn){ autoIdCurrent(); }
else { const b=$('#eboxes'); if(b) b.innerHTML=''; document.getElementById('scanning')?.remove(); }
});
-{ const gl=document.getElementById('gridlink'); if(gl) gl.href=q('/admin/cactus-curator'+(CATEGORY?'?category='+encodeURIComponent(CATEGORY):'')); }
+{ const gl=document.getElementById('gridlink'); if(gl) gl.href=q('/admin/design-curator'+(CATEGORY?'?category='+encodeURIComponent(CATEGORY):'')); }
loadCollections();
(async function(){
const r=await fetch(q('/api/admin/drunk/list'+(CATEGORY?'?category='+encodeURIComponent(CATEGORY):'')));
diff --git a/public/admin/workspace.html b/public/admin/workspace.html
index 7067d92..dd49e33 100644
--- a/public/admin/workspace.html
+++ b/public/admin/workspace.html
@@ -67,7 +67,7 @@
<script>
// ---- Catalog of openable admin grids/pages ----
const PAGES = [
- ['Cactus Curator', '/admin/cactus-curator'],
+ ['Design Curator', '/admin/design-curator'],
['Drunk Curator', '/admin/drunk-curator'],
['Dogs Curator', '/admin/dogs-curator'],
['Botanical Curator', '/admin/botanical-wonders-curator'],
diff --git a/server.js b/server.js
index d350b48..86e450d 100644
--- a/server.js
+++ b/server.js
@@ -1421,9 +1421,16 @@ app.get('/api/admin/botanical-wonders/list', (req, res) => {
// 2 digital → unpublish, sell as digital file (stamps digital_file_at date)
// 3 fix → keep but needs fixing (flags needs_fixing_at date)
// 4 live → keep, go live in web viewer (publish + web_viewer flag)
-app.get('/admin/cactus-curator', (req, res) => {
+// Renamed 2026-06-01: "Cactus Curator" (legacy codename) → "Design Curator".
+// Canonical path is now /admin/design-curator; old /admin/cactus-curator
+// 301-redirects (query preserved) so existing bookmarks/links keep working.
+app.get('/admin/design-curator', (req, res) => {
if (!isAdmin(req)) return res.status(404).type('html').send('<h1>404</h1>');
- res.sendFile(path.join(__dirname, 'public', 'admin', 'cactus-curator.html'));
+ res.sendFile(path.join(__dirname, 'public', 'admin', 'design-curator.html'));
+});
+app.get('/admin/cactus-curator', (req, res) => {
+ const i = req.originalUrl.indexOf('?');
+ res.redirect(301, '/admin/design-curator' + (i >= 0 ? req.originalUrl.slice(i) : ''));
});
// ── /admin/rooms — master gallery of EVERY saved room-setting render ───────
@@ -5544,7 +5551,7 @@ function htmlHeader(active) {
any page on the public site. -->
<div id="admin-nav" hidden style="margin-top:14px;padding-top:14px;border-top:1px solid var(--line,#e5e0d4)">
<div style="font:600 10.5px/1 ui-sans-serif,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint,#7a6e5a);margin:0 14px 8px">Admin</div>
- <a href="/admin/cactus-curator" class="${active === '/admin/cactus-curator' ? 'active' : ''}">🌵 Cactus Curator (grid)</a>
+ <a href="/admin/design-curator" class="${active === '/admin/design-curator' ? 'active' : ''}">🎨 Design Curator (grid)</a>
<a href="/admin/bleed-review" class="${active === '/admin/bleed-review' ? 'active' : ''}">🩸 Bleed Review</a>
<a href="/admin/drunk-curator" class="${active === '/admin/drunk-curator' ? 'active' : ''}">🥃 Hot-or-Not + Wall Viewer</a>
<a href="/admin/rooms" class="${active === '/admin/rooms' ? 'active' : ''}">🛋 Room Renders Gallery</a>
← 365dbd6 BLEED_GHOST cohort triage report (7875 designs, read-only):
·
back to Wallco Ai
·
overnight loop: extend to daytime (stop_hour=18, cap=140), s ca8e0ff →